在我的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()
虽然可行,但所有设置输出都将作为第一个运行的测试的一部分进行捕获。这对于以函数为范围的设置是很好的,但对于基于会话的设置则没有意义。
我做错了什么/有办法解决吗?
答案 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
将更适合您