在pytest的最新版本中,很容易创建像这样的函数,类,模块或会话范围的灯具:
@pytest.fixture(scope="module")
def db():
return DB()
Run Code Online (Sandbox Code Playgroud)
这创建了一个仅为每个使用它的python模块调用一次的fixture.
但是每个python包需要调用一次的灯具呢?(使用鼻子,可以使用包中的setUp/tearDown方法完成__init__.py)
对于包或目录级别的灯具,您可以conftest.py使用在您需要的目录中的文件中声明灯具scope='session'.一旦包/目录中的第一个测试使用它,就会实例化fixture.下面是一个示例但是,如果fixture函数注册了终结器,您可能会看到它在该目录中的最后一次测试之后没有直接执行.我认为pytest可以用来支持更急切的拆解或者在需要时引入"目录"范围.通常这不是一个大问题,如果拆解执行稍晚只要它不执行得太早:)请注意,显然Jason 打算放弃包级别设置/拆卸支持鼻子
无论如何,如果您需要更加急切/准确的pytest拆解,请随时打开一个问题.