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 之前先评估第三方库噪声:逐步收口比一次翻车稳妥。