如何运行服务器作为py.test的fixture

时间:2016-02-20 18:56:40

标签: python bottle pytest fixtures

我想用服务器作为夹具编写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()程序进入无限循环时,不会执行测试体。我应该在同一个线程中调用run吗?我的设计很好吗?将来我想使用服务器夹具集成到服务器状态。例如,使用Selenium进行测试“添加注释”,最后使用服务器夹具询问服务器是否确实发生了此操作。

1 个答案:

答案 0 :(得分:1)

测试挂起是因为您的run(host="localhost", port=8080)启动了一个永远等待的服务器。您应该在不同的线程/进程中启动该服务器。

查看pytest-xprocess之类的内容,以便为测试运行外部服务器进程。