python - pytest 2.3 中的包范围固定装置

标签 python pytest

在最新版本的 pytest 中,可以很容易地创建函数、类、模块或 session 作用域的固定装置,如下所示:

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

这会创建一个 fixture,每个使用它的 python 模块只会调用一次。

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

最佳答案

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

无论如何,如果您需要更热切/更精确的 pytest 拆解,请随时 open an issue .

关于python - pytest 2.3 中的包范围固定装置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13259881/

相关文章:

python - 如何有效地替换 pandas 列中日期时间值的时间部分?

python - reshape (60000, 28, 28, 1) 是什么意思?

django pytest 没有按预期工作

python - pytest - 模拟网络故障

python - 我如何断言列表与 pytest 相等

python - 为什么 Python readline 模块在 OS X 上不可用?

python - 如何在 numpy 中获得逐元素矩阵乘法(Hadamard 乘积)?

python - 使用 scipy 最小化也采用非变分参数的函数

PyTest 抑制结果调试语句

python - 从测试目录运行时找不到日志文件