在我的测试套件中,我具有某些数据生成固定装置,可用于许多参数化测试。其中一些测试希望这些固定装置每个会话仅运行一次,而另一些测试则需要它们运行每个功能。例如,我可能有一个类似于以下的装置:
@pytest.fixture
def get_random_person():
return random.choice(list_of_people)
和2个参数化测试,每个测试条件要使用同一个人,而每次都希望有一个新人。有什么办法可以使这个夹具在一个测试中具有scope =“ session”而在另一个测试中具有scope =“ function”?
答案 0 :(得分:0)
执行此操作的一种方法是分离实现,然后让2个不同作用域的灯具返回该实现。像这样:
def _random_person():
return random.choice(list_of_people)
@pytest.fixture(scope='function')
def get_random_person_function_scope():
return _random_person()
@pytest.fixture(scope='session')
def get_random_person_session_scope():
return _random_person()
答案 1 :(得分:0)
James的回答还可以,但是如果您从治具代码中set CONDA_DLL_SEARCH_MODIFICATION_ENABLE=1
则无济于事。这是一种更好的方法:
yield
这样,您仍然可以处理上下文固定装置。
Github问题供参考:https://github.com/pytest-dev/pytest/issues/3425