Как запустить сервер как крепление для py.test
Я хочу написать тесты Selenium с сервером в качестве приспособления:
import pytest
@pytest.fixture()
def driver(request):
from selenium import webdriver
d = webdriver.Firefox()
request.addfinalizer(d.close)
return d
@pytest.fixture()
def server():
from server import run
run(host="localhost", port=8080)
def test_can_see_echo(driver,server):
page = TestPage(driver)
page.fill_text_in_input("test")
page.click_send()
print page.get_returnet_value()
Функция запуска в устройстве сервера является функцией запуска бутылки. Проблема в том, что когда я вызываю run(), программы переходят в бесконечный цикл, а тело теста не выполняется. Должен ли я вызвать запустить в той же теме? Мой дизайн в порядке? В будущем я хочу использовать крепление сервера для интеграции в состояние сервера. Например, сделайте тест "добавить комментарий" с помощью Selenium и в конце используйте приспособление сервера, чтобы спросить сервер, действительно ли это действие произошло.
1 ответ
Тесты зависают, потому что ваш run(host="localhost", port=8080)
запускает сервер, который ждет вечно. Вы должны запустить этот сервер в другом потоке / процессе.
Посмотрите что-то вроде pytest-xprocess для запуска процессов внешнего сервера для ваших тестов.