У меня следующая проблема.
Я бы хотел запустить тесты на локальном сервере флеш-памяти перед развертыванием в производство.Я использую Pytest для этого.Мой conftest.py на данный момент выглядит так:
import pytest
from toolbox import Toolbox
import subprocess
def pytest_addoption(parser):
"""Add option to pass --testenv=local to pytest cli command"""
parser.addoption(
"--testenv", action="store", default="exodemo", help="my option: type1 or type2"
)
@pytest.fixture(scope="module")
def testenv(request):
return request.config.getoption("--testenv")
@pytest.fixture(scope="module")
def testurl(testenv):
if testenv == 'local':
return 'http://localhost:5000/'
else:
return 'https://api.domain.com/'
Это позволяет мне проверить производственный API, введя команду pytest
и протестировать локальный сервер флеш, набрав pytest --testenv=local
Этот код работает безупречно.
Моя проблема в том, что мне приходится вручную создавать экземпляр локального колб-сервера с терминала каждый раз, когда я хочу провести локальное тестирование, например:
source ../pypyenv/bin/activate
python ../app.py
Теперь я хотел добавить прибор, который инициируеттерминал в фоновом режиме в начале тестов и закрытие сервера после завершения тестирования.После долгих исследований и испытаний я все еще не могу заставить его работать.Это строка, которую я добавил к conftest.py:
@pytest.fixture(scope="module", autouse=True)
def spinup(testenv):
if testenv == 'local':
cmd = ['../pypyenv/bin/python', '../app.py']
p = subprocess.Popen(cmd, shell=True)
yield
p.terminate()
else:
pass
Ошибки, которые я получаю от пакета запросов, который говорит, что нет соединения / отказано.
E request.exceptions.ConnectionError: HTTPConnectionPool (host = 'localhost', port = 5000): превышено максимальное количество попыток с помощью url: / login (вызвано NewConnectionError (': не удалось установить новое соединение): [Errno 111] Отказано в соединении ',))
/ usr / lib / python3 / dist-packages / запросы / adapters.py: 437: ConnectionError
Это значит для менячто сервер фляги под app.py не в сети.Какие-либо предложения?Я открыт для более элегантных альтернатив