7

在最新版本的 pytest 中,很容易创建函数、类、模块或会话范围的固定装置,如下所示:

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

这会创建一个固定装置,对于使用它的每个 python 模块,它只会被调用一次。

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

4

1 回答 1

5

conftest.py对于包或目录级别的固定装置,您可以在需要它的目录中的文件中声明固定装置,使用scope='session'. 一旦包/目录中的第一个测试使用它,夹具将被实例化。这是一个示例但是,如果夹具函数注册了一个终结器,您可能会看到它不是在该目录中的最后一个测试之后直接执行的。我认为可以使 pytest 支持更急切的拆卸或在需要时引入“目录”范围。通常,如果拆解执行得稍晚一点,只要它不执行得太早,通常这不是一个大问题 :) 另请注意,Jason 显然打算放弃对鼻子的包级设置/拆解支持

无论如何,如果您需要更急切/准确的 pytest 拆解,请随时打开问题

于 2012-11-07T10:03:15.243 回答