Создать сервер в начале теста pytest - PullRequest
1 голос
/ 07 ноября 2019

Я хотел бы создать сервер перед началом тестирования, а затем завершить его после выполнения всех тестов. Описание поведения ниже.

Первый раз, когда я запускаю тесты:
1. Возвращает ошибку (ниже)
2. Тесты не выполняются
3. Сервер вызывается (теперь сервер работает)

Второй раз, когда я запускаю тесты:
1. Возвращает ту же ошибку (ниже)
2. Проход тестов
3. Сервер выключен

Ошибка: Возникло исключение: RuntimeErrorНе удалось запустить процесс сервера

@pytest.fixture(autouse=True, scope="session")
def start_server(xprocess):
    port = 8000
    server_path = py.path.local(__file__).dirpath("service.py")
    xprocess.ensure("server", lambda cwd: ("started", [sys.executable, server_path, port]))
    yield
    xprocess.getinfo("server").terminate()

1 Ответ

0 голосов
/ 14 ноября 2019

Решение:

def server(host, port):
    # definition of your server

@pytest.fixture(autouse=True, scope="session")
def start_server():
    p = multiprocessing.Process(target=server, args=(host, port))
    p.start()
    yield
    p.terminate()
...