Удалённый запуск тестов 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 | |
| Тестирование | |
| Параметризация | |
| Ошибки | |
| Видео |