pytest 如何跳过(排除)某些目录不收集测试?

pytest 排除目录用 --ignore=路径 参数,可多次使用;在 pytest.ini 的 addopts 中配置可永久生效。norecursedirs 可排除按模式匹配。

最佳实践
pytest 如何跳过(排除)某些目录不收集测试?封面

命令行用 --ignore=目录名 排除;想每次自动生效,把 --ignore 写进 pytest.iniaddopts 中。

命令行排除

# 排除单个目录
pytest --ignore=somedirectory

# 排除多个目录
pytest --ignore=somedirectory --ignore=someotherdirectory

配置文件永久生效

# pytest.ini
[pytest]
addopts = --ignore=somedirectory --ignore=someotherdirectory

之后直接 pytest 就会自动排除这些目录。

按模式排除:norecursedirs

[pytest]
norecursedirs = node_modules dist build .venv

norecursedirs 接受目录名模式(支持通配符),匹配的目录在收集阶段就被跳过,不递归进入。pytest 默认已排除 .gitvenvnode_modules 等常见目录。

排除单个文件

pytest --ignore=test_legacy.py
# 或在 conftest.py 中
collect_ignore = ["test_legacy.py"]

常见问题(FAQ)

Q:--ignore 和 --deselect 有什么区别?
A:--ignore 在收集阶段就跳过整个目录/文件;--deselect 是收集完成后排除具体的测试用例(格式 文件::用例名)。

Q:虚拟环境目录会被收集吗?
A:pytest 默认排除 venv.venv 等,但如果自定义了目录名,建议加进 norecursedirs

Q:--ignore 的路径是相对哪的?
A:相对当前工作目录。建议从项目根目录运行 pytest,路径写相对根目录的路径。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台