You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置pytest仅收集特定命名格式的Python测试文件?

解决Pytest测试文件收集问题的可行方案

1. 修正pyproject.toml的配置位置

之前配置没生效大概率是没放在正确的区块里,pytest只识别[tool.pytest.ini_options]下的配置项,正确写法如下:

[tool.pytest.ini_options]
python_files = ["test_*.py", "*_test.py"]

不要把配置随便放在文件根节点,否则pytest会忽略这些设置。

2. 换用pytest.ini或setup.cfg配置文件

如果pyproject.toml依旧不生效,直接用更稳定的传统配置文件:

  • 新建pytest.ini文件,内容:
[pytest]
python_files = test_*.py *_test.py
  • 或者创建setup.cfg文件,内容:
[tool:pytest]
python_files = test_*.py *_test.py

这两类文件的识别优先级更高,很少出现配置不生效的情况。

3. 命令行直接指定匹配规则

不想修改配置文件的话,执行命令时直接通过参数指定测试文件规则:

pytest . --python-files="test_*.py" --python-files="*_test.py"

这种方式适合临时验证规则,也可以直接写在CI脚本里。

4. 兜底方案:排除非测试文件

如果以上方法都无效,直接在配置里排除源码文件。比如你的源码文件是src_*.py或特定命名,可这么配置:

  • 用pyproject.toml:
[tool.pytest.ini_options]
python_files = ["test_*.py", "*_test.py"]
addopts = --ignore=src_*.py --ignore=utils.py
  • 用pytest.ini:
[pytest]
python_files = test_*.py *_test.py
ignore = src_*.py core.py */__pycache__/

把不需要收集的文件或目录都列在排除规则里即可。

5. 检查测试文件命名是否合规

最后确认测试文件的命名严格符合规则:有没有把test_*.py写成tests_*.py(多了个s),或者后缀不是.py的情况,pytest只会严格匹配你指定的文件名规则。


内容的提问来源于stack exchange,提问作者The Nerdly Gentleman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 02:27:15