如何告诉 py.test 跳过某些目录?

我尝试使用 setup.cfg 中的 norecursedirs选项告诉 py.test 不要从某些目录收集测试,但它似乎忽略了这个选项。

[tool:pytest]
norecursedirs=lib/third

当我运行 py.test时,我确实看到它是如何从 lib/third内部得到测试的!

112033 次浏览

norecursedirs应该可以工作。请检查是否有 pytest.ini 或其他 setup.cfg 文件。如何调用 py.test

我解决了这个难题: 如果在一个可能的配置文件(pytest.initox.inisetup.cfg)中找到了 pytest 部分,pytest 不会寻找其他的配置文件,所以请确保在单个文件中定义了 py.test 选项。

我建议使用 setup.cfg

你可以用

py.test -k 'not third'

排除所有“第三”目录内容的。

py.test --ignore=somedir为我工作

在 pytest.ini 中:

[pytest]
addopts = --ignore=somedir --ignore=someotherdir

如果使用 setup.cfg,则必须按照 http://doc.pytest.org/en/latest/example/pythoncollection.html使用 [tool:pytest]

# content of pytest.ini
# 也可以在 tox.ini 或 setup.cfg 文件中定义,不过
在 setup.cfg 文件中的 # name 应该是“ tool: pytest”

如果你有几个不同父目录,你可以指定不同的 --ignore参数:

py.test --ignore=somedir --ignore=otherdir --ignore=etcdir

  • 忽略将阻止收集指定的路径。
    可以多次指定。

在我的例子中,问题是缺少通配符:

[tool:pytest]
norecursedirs = subpath/*

norecursedirs = subpath没有。

要使用 pytest.ini(推荐使用 pytest.ini,除非您使用的是 tox,在这种情况下使用 tox.ini是有意义的) ,请使用 pytest -c pytest.ini调用 pytest

为了防止我的样品 not_me_1.pynot_me_2.py被测试或夹层,我的 pytest.ini如下:

[pytest]
addopts = --ignore-glob=not_me_*


[pycodestyle]
ignore = not_me_* ALL