可以在conftest中进行会话设置,而无需在第一次测试中进行设置?

时间:2018-07-06 20:32:40

标签: python pytest

在我的conftest.py文件中,我看起来像这样:

@pytest.fixture(scope="session", autouse=True)
def do_some_setup():
    val = thing_that_takes_a_few_mins()
    yield val
    other_thing_that_takes_a_few_mins() 

虽然可行,但所有设置输出都将作为第一个运行的测试的一部分进行捕获。这对于以函数为范围的设置是很好的,但对于基于会话的设置则没有意义。

我做错了什么/有办法解决吗?

1 个答案:

答案 0 :(得分:1)

您始终可以将代码从会话范围的夹具移至运行前挂钩,例如移至pytest_sessionstart / pytest_sessionfinish

# conftest.py

def pytest_sessionstart(session):
    thing_that_takes_a_few_mins()


def pytest_sessionfinish(session, exitstatus):
    other_thing_that_takes_a_few_mins()

请注意,尽管pytest_sessionstart挂钩在收集测试之前已被调用,所以如果您需要有关计划在thing_that_takes_a_few_mins中运行的测试的信息,挂钩pytest_runtestloop将更适合您