Python 如何告诉py.test跳过某些目录?
我试图使用setup.cfg中的选项告诉py.test不要从某些目录收集测试,但它似乎忽略了它Python 如何告诉py.test跳过某些目录?,python,unit-testing,pytest,Python,Unit Testing,Pytest,我试图使用setup.cfg中的选项告诉py.test不要从某些目录收集测试,但它似乎忽略了它 [tool:pytest] norecursedirs=lib/third 当我运行py.test时,我确实看到它是如何从lib/third内部获得测试的 norecursedirs应该可以工作。检查是否有pytest.ini或其他setup.cfg文件。你是如何调用py.test的?我解开了谜团:如果在一个可能的配置文件(pytest.ini,tox.ini和setup.cfg)中找到pytest
[tool:pytest]
norecursedirs=lib/third
当我运行
py.test
时,我确实看到它是如何从lib/third
内部获得测试的 norecursedirs
应该可以工作。检查是否有pytest.ini或其他setup.cfg文件。你是如何调用py.test的?我解开了谜团:如果在一个可能的配置文件(pytest.ini
,tox.ini
和setup.cfg
)中找到pytest节,pytest将不会查找任何其他部分,因此请确保在单个文件中定义py.test选项
我建议使用setup.cfg
您可以使用
py.test -k 'not third'
这排除了所有“第三”目录内容。
py.test--ignore=somedir
为我工作如果您使用的是setup.cfg,您必须按照
#pytest.ini的内容#也可以在tox.ini或setup.cfg文件中定义,尽管该部分
#setup.cfg文件中的名称应为“tool:pytest”
如果有多个目录具有不同的父目录,则可以指定不同的
--忽略参数:
py.test--ignore=somedir--ignore=otherdir--ignore=etcdir
- 新选项:--忽略将阻止收集指定的路径。
可以多次指定
在我的例子中,问题是缺少通配符。以下是我的作品:
[tool:pytest]
norecursedirs = subpath/*
而只有norecursedirs=subpath
没有使用pytest.ini
(建议使用tox
,除非您使用tox
,在这种情况下tox.ini
是有意义的),使用pytest-c pytest.ini
调用pytest
为了防止对我的样本not_me_1.py
和not_me_2.py
进行测试或筛选,我的pytest.ini
如下:
[pytest]
addopts = --ignore-glob=not_me_*
[pycodestyle]
ignore = not_me_* ALL
似乎我有py.test
和pytest
这两个测试都运行测试,而且是不同的野兽。奇怪的是,pytest
失败,因为它没有从[pytest]
pytest
中加载排除项。你想要py.test
。还可以尝试做nosecuredirs=lib/third/*
有没有办法用代码忽略脚本本身中的一些文件夹?结束于此,因为我很好奇为什么我在本地开发的web应用程序的pytest如此之慢。。。原因是某些上传的资源目录具有嵌套的yy/dd/mm结构。。。。导致它真的很糟糕!谢天谢地,pytest.ini
中的[pytest]norecursedirs=resources
做了一个技巧!我确实有setup.cfg
,里面有正确的[pytest]
和NORECORSEDIR,但它似乎被忽略了,相反,它将查找所有文件。可以多次指定--ignore
以忽略多个目录Show以跳过某些测试而不是目录您可以使用-k
选项,如下所示。请参阅上的“按关键字表达式运行测试”。标记在这里也可能有帮助。将测试标记为“慢”,等等,然后使用-k“not slow”
也可以忽略基于Unix shell样式通配符的测试文件路径。例如,--ignore glob=***/sandbox/*
将忽略任何sandbox
文件夹中的所有文件。为什么setup.cfg
?当前的文档似乎建议您注意,如果要使用.ini
文件,则需要使用pytest-c pytest.ini
指定它。由于某种原因,setup.cfg
内容被自动拾取。@therightstuff for mepytest.ini
在使用时没有这些技巧。这里也一样。不过,这种行为很奇怪。