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


91

我试图使用norecursedirssetup.cfg中的选项来告诉py.test不要从某些目录中收集测试,但是似乎确实忽略了它。

[tool:pytest]
norecursedirs=lib/third

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


看来我已经py.testpytest他们两个都进行测试并且是不同的野兽。奇怪,但pytest失败了,因为它没有加载的排除项[pytest]
索林2012年

1
pytest来自logilab。你要py.test
ecatmur 2012年

3
也尝试做nosecuredirs=lib/third/*
intelis '16

有没有办法用代码忽略脚本本身中的某些文件夹?
bicepjai

2
到这里结束,是因为我很好奇为什么本地开发中的Web应用程序的pytest如此之慢……原因是某些上载的资源目录具有嵌套yy / dd / mm结构....导致它真的很烂!值得庆幸的是[pytest] norecursedirs = resourcespytest.ini这真是个绝招!💪–
andilabs

Answers:


85

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


5
并且--ignore可以多次指定以忽略多个目录
凤凰城

如何跳过某些测试而不是目录
Rajat jain

您可以将该-k选项用作下面显示的另一个答案。请参阅docs.pytest.org/en/latest/…上的“通过关键字表达式运行测试” 。标记在这里也可能会有所帮助。将测试标记为“慢”等,然后使用-k "not slow"
shadfc

也可以用来--ignore-glob忽略基于Unix Shell样式通配符的测试文件路径。例如,--ignore-glob=**/sandbox/*将忽略任何sandbox文件夹中的所有文件。
一月M.

28

如果您有多个具有不同父级的目录,则可以指定不同的--ignore参数:

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

  • 新选项:--ignore将阻止收集指定的路径。
    可以多次指定。

23

我解决了一个难题:如果在可能的配置文件(和)之一中找到pytest节,则pytest不会查找其他任何文件pytest.ini,因此请确保在单个文件中定义py.test选项。tox.inisetup.cfg

我建议使用setup.cfg


8
为什么setup.cfg呢 当前文档似乎推荐其他两个
jebob

我认为必须提及的一点是,如果要使用.ini文件,则需要使用指定它pytest -c pytest.ini。由于某些原因,setup.cfg内容会被自动提取。
therightstuff


11

norecursedirs应该管用。检查您是否有pytest.ini或其他setup.cfg文件。您如何调用py.test


1
我的确有setup.cfg适当的[pytest]和norecorsedirs,但似乎被忽略了,而是会查找所有文件。
sorin 2013年

8

就我而言,问题是缺少通配符。以下对我有用:

[tool:pytest]
norecursedirs = subpath/*

norecursedirs = subpath没有。


同样在这里。虽然非常奇怪的行为。
azmeuk


0

要使用pytest.ini(建议使用,除非tox在这种情况下tox.ini才有意义,否则建议这样做),请pytest使用pytest -c pytest.ini

为了防止我的样本not_me_1.pynot_me_2.py从被测试或LINTED,我的pytest.ini如下:

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

[pycodestyle]
ignore = not_me_* ALL

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.