我希望有一个特定的设置/拆卸夹具的一个测试模块。显然,我希望它在模块中的所有测试之前运行一次安装代码,在完成所有测试之后运行一次。
所以,我想出了这个:
import pytest
@pytest.fixture(scope="module")
def setup_and_teardown():
print("Start")
yield
print("End")
def test_checking():
print("Checking")
assert True这不是这样的。只有当我为模块中的第一个测试提供setup_and_teardown参数时,它才能起作用。
它应该是这样工作的吗?如果我将它标记为module级别的夹具,它不是应该自动运行吗?
发布于 2020-10-05 19:36:54
模块作用域固定装置的行为与任何其他作用域的固定装置相同--只有在测试中明确通过、使用@pytest.mark.usefixtures标记或设置autouse=True时,才能使用它们:
@pytest.fixture(scope="module", autouse=True)
def setup_and_teardown():
print("setup")
yield
print("teardown")对于执行安装/解压的模块范围和会话范围的固定装置,这是最常用的选项。
对于产生在测试中访问的对象(例如只能分配一次的扩展资源)的夹具,这是没有意义的,因为夹具必须通过测试才能访问。而且,并不是所有的测试都需要它。
https://stackoverflow.com/questions/64214525
复制相似问题