Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何告诉py.test跳过某些目录?_Python_Unit Testing_Pytest - Fatal编程技术网

Python 如何告诉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

我试图使用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节,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 me
pytest.ini
在使用时没有这些技巧。这里也一样。不过,这种行为很奇怪。