pytest 2.3中的封装范围固定装置

时间:2012-11-06 21:41:22

标签: python pytest

在pytest的最新版本中,很容易创建像这样的函数,类,模块或会话范围的灯具:

@pytest.fixture(scope="module") 
def db():
     return DB()

这将创建一个仅为每个使用它的python模块调用一次的工具。

但是每个python包需要调用一次的灯具呢? (使用nose,可以使用包的__init__.py中的setUp / tearDown方法完成)

1 个答案:

答案 0 :(得分:5)

对于包或目录级别的灯具,您可以使用conftest.py在您需要的目录中的scope='session'文件中声明灯具。一旦包/目录中的第一个测试使用它,就会实例化fixture。这里是an example但是,如果fixture函数注册了一个终结器,你可能会看到它在该目录中的最后一次测试之后没有直接执行。我认为pytest可以用来支持更急切的拆解或者在需要时引入“目录”范围。通常,如果拆解执行的时间稍晚,只要它不会执行得太早,这不是一个大问题:)请注意,显然Jason intends to drop package-level setup/teardown support for nose

无论如何,如果您需要更加急切/准确的pytest拆解,请随意open an issue