首页/开发/软件测试速查/pytest 配置文件
自动化测试66 条

pytest 配置文件

pytest 配置集中在 pytest.ini、pyproject.toml 的 [tool.pytest.ini_options] 或 tox.ini;常用项包括 testpaths、addopts、markers、filterwarnings 与日志设置。

软件测试速查开发更新于 2026-10-13

pytest 配置文件是什么

pytest 配置集中在三处:pytest.ini、pyproject.toml 的 [tool.pytest.ini_options] 段、tox.ini,三者选一避免并存。常用项包括 testpaths、addopts、markers、filterwarnings 与日志设置;配置的作用是把「大家默认要带的参数」固化下来,让本地与 CI 行为一致。

基本信息

配置文件pytest.ini、pyproject.toml([tool.pytest.ini_options])、tox.ini 三选一
常用项testpaths、addopts、markers、filterwarnings、log_cli
生效规则多个配置并存时只认一个,容易踩到「编辑错文件」
使用建议约定参数放 addopts;环境相关参数不要放
markers配合 --strict-markers,杜绝拼写错误的标记

pyproject 示例

pyproject 示例
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-q -ra --strict-markers"
markers = [
    "smoke: 冒烟集合",
    "slow: 慢用例",
]
filterwarnings = ["error"]

典型使用场景

  • 统一命令:默认参数固化后,本地与 CI 跑法一致。
  • 用例筛选:markers 声明后按 smoke 或 slow 选跑。
  • 警告治理:filterwarnings 把警告升级为错误,提前清理隐患。
  • 日志调试:log_cli 打开实时日志,排错不用加 print。
  • 目录约定:testpaths 固定测试根目录,随手执行不会乱扫。
  • 参数收敛:把散落在 CI 脚本里的参数收拢到一处配置。

常见配置项

选项作用常用值
testpaths测试根目录tests 或 test
addopts默认命令行参数-q -ra --strict-markers
markers自定义标记声明smoke、slow、integration
filterwarnings警告策略error 或按类忽略
log_cli实时日志true 或按级别开启
把约定参数(-ra、--strict-markers)放进 addopts,让本地与 CI 行为一致。

团队约定建议

  • 插件统一:常用插件写入依赖约束,避免各人版本不一。
  • 并行与随机:xdist 与随机排序参数写入配置,全队同口径。
  • 覆盖率开关:cov 参数按需开启,不放进默认 addopts 拖慢本地。
  • 分环境差异:用环境变量覆盖,而不是各留一份配置文件。
配置只保留一处:pytest.ini、pyproject.toml、tox.ini 并存时,实际生效的常常不是正在编辑的那个。
优先级顺序:命令行参数覆盖配置文件,配置文件覆盖内置默认值,排查行为差异先按此顺序核对。
filterwarnings 全量升级为 error 之前先评估第三方库噪声:逐步收口比一次翻车稳妥。

易错点

  • 多个配置文件并存时,实际生效的不是正在编辑的那一个
  • 把环境相关参数写进 addopts,本地与 CI 互相打架
  • markers 未声明,拼错标记名时用例静默漏跑
  • filterwarnings 直接全量 error,第三方库噪声导致套件大面积失败
  • testpaths 未设置,pytest 扫到构建产物目录执行了不该跑的用例
  • 在 addopts 里塞 -k 表达式,本地开发长期只跑子集,回归范围被悄悄缩小
  • 同目录同时存在 pytest.ini 与 pyproject 配置段,维护者各改各的

数据来源与参考

  • pytest 官方文档:Configuration
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌