Python 我可以让pytest doctest模块忽略一个文件吗?
我们使用pytest来测试我们的项目,并且默认情况下启用了Python 我可以让pytest doctest模块忽略一个文件吗?,python,pytest,doctest,Python,Pytest,Doctest,我们使用pytest来测试我们的项目,并且默认情况下启用了--doctest模块,以收集整个项目中的所有doctest 然而,有一个wsgi.py在测试收集期间可能无法导入,但我无法让pytest忽略它 我试着把它放在conftest.py中的collect\u ignore列表中,但是显然doctest模块没有使用这个列表 唯一有效的方法是将wsgi.py的整个目录放入pytest配置文件中的norecursedirs,但这显然隐藏了整个目录,这是我不想要的 有没有办法让doctest模块只忽
--doctest模块
,以收集整个项目中的所有doctest
然而,有一个wsgi.py
在测试收集期间可能无法导入,但我无法让pytest忽略它
我试着把它放在conftest.py
中的collect\u ignore
列表中,但是显然doctest模块没有使用这个列表
唯一有效的方法是将wsgi.py
的整个目录放入pytest配置文件中的norecursedirs
,但这显然隐藏了整个目录,这是我不想要的
有没有办法让doctest模块只忽略某个文件?您可以使用hook有条件地从测试发现中排除一些文件夹。 如前所述,
pytest\u ignore\u collect
应该可以做到这一点。重要的是要注意,您应该将conftest.py
放入根文件夹(运行测试的文件夹)。例如: 自pytest v4.3.0以来,还有一个允许按模式忽略的
--ignore glob
标志。例子:
pytest--doctest modules--ignore glob=“*\uuu py3.py”dir/
对我来说,关键的部分是将这个pytest\u ignore\u collect
钩子放在项目根目录的conftest.py中。我们在tests
目录中有一个conftest.py,其中有一些设置,但将挂钩放在那里不起作用。hmmm。。。这只是给了我一大堆E KeyError:“--doctest modules”
这可能会有帮助
def pytest_ignore_collect(path, config):
""" return True to prevent considering this path for collection.
This hook is consulted for all files and directories prior to calling
more specific hooks.
"""
import sys
def pytest_ignore_collect(path):
if sys.version_info[0] > 2:
if str(path).endswith("__py2.py"):
return True
else:
if str(path).endswith("__py3.py"):
return True