Удалённый запуск тестов PyTest

Содержание
Введение
FastAPI и subprocess
Похожие статьи

Введение

В этой статье вы можете познакомиться с различными примерами удалённого запуска тестов на PyTest.

FastAPI и subprocess

Рассмотрим следующий сетап: две машины с Windows 7. Нужно запустить тесты на машине W01 из машины W02

На обеих машинах рекомендую создать и активировать виртуальное окружение например, с помощью venv

python -m venv venv
.\venv\Scripts\activate

Машина 1, с на который будут запущены тесты

python -m pip install fastapi uvicorn

# HOST W01 FastAPI api_demo.py import subprocess import sys import uvicorn from fastapi import FastAPI app = FastAPI() python_venv = sys.prefix + "\" + "Scripts\python.exe" @app.get("/test") def test(): subprocess.run([ python_venv, "-m" "pytest", "--maxfail=1", "--disable-warnings", "-vv", "--tb=long", "--html=report.html", "--self-contained-html", "test_smoke.py" ]) if __name__ == "__main__": uvicorn.run("api_demo:app", host="0.0.0.0", port=5000, log_level="info")

Машина 1, тесты. Замените их на нужные вам и доустановите необходимые библиотеки.

# HOST W01 Tests smoke_test.py import pytest def test_pass(): assert 1 == 1 def test_fail(): assert 1 == 2

Машина 2, с которой посылается сигнал о запуске тестов

python -m pip install requests

# HOST W02 trigger.py import requests W01_IP = "10.8.1.101:5000" r = requests.get(f"http://{W01_IP}/test") print(r.status_code)

На первой машине нужно открыть порт 5000.

Открыть порт в Windows через PowerShell
Открыть порт в Windows вручную

Затем нужно запустить FastAPI

python .\api_demo.py

←[32mINFO←[0m: Started server process [←[36m2156←[0m] ←[32mINFO←[0m: Waiting for application startup. ←[32mINFO←[0m: Application startup complete. ←[32mINFO←[0m: Uvicorn running on ←[1mhttp://0.0.0.0:5000←[0m (Press CTRL+C to quit)

На второй машине нужно запустить скрипт

python .\trigger.py

200

Изображение баннера

Автор статьи: Андрей Олегович

Похожие статьи
PyTest
Тестирование
Параметризация
Ошибки
Видео

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: