我尝试使用 setup.cfg 中的 norecursedirs选项告诉 py.test 不要从某些目录收集测试,但它似乎忽略了这个选项。
norecursedirs
[tool:pytest] norecursedirs=lib/third
当我运行 py.test时,我确实看到它是如何从 lib/third内部得到测试的!
py.test
lib/third
norecursedirs应该可以工作。请检查是否有 pytest.ini 或其他 setup.cfg 文件。如何调用 py.test?
我解决了这个难题: 如果在一个可能的配置文件(pytest.ini、 tox.ini和 setup.cfg)中找到了 pytest 部分,pytest 不会寻找其他的配置文件,所以请确保在单个文件中定义了 py.test 选项。
pytest.ini
tox.ini
setup.cfg
我建议使用 setup.cfg。
你可以用
py.test -k 'not third'
排除所有“第三”目录内容的。
py.test --ignore=somedir为我工作
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]
[tool:pytest]
# content of pytest.ini # 也可以在 tox.ini 或 setup.cfg 文件中定义,不过 在 setup.cfg 文件中的 # name 应该是“ tool: pytest”
如果你有几个不同父目录,你可以指定不同的 --ignore参数:
--ignore
py.test --ignore=somedir --ignore=otherdir --ignore=etcdir
忽略将阻止收集指定的路径。 可以多次指定。
在我的例子中,问题是缺少通配符:
[tool:pytest] norecursedirs = subpath/*
而 norecursedirs = subpath没有。
norecursedirs = subpath
要使用 pytest.ini(推荐使用 pytest.ini,除非您使用的是 tox,在这种情况下使用 tox.ini是有意义的) ,请使用 pytest -c pytest.ini调用 pytest。
tox
pytest -c pytest.ini
pytest
为了防止我的样品 not_me_1.py和 not_me_2.py被测试或夹层,我的 pytest.ini如下:
not_me_1.py
not_me_2.py
[pytest] addopts = --ignore-glob=not_me_* [pycodestyle] ignore = not_me_* ALL