markdown复制## 1. Pytest 命令行参数的核心价值
刚接触 pytest 时,我只知道用 `pytest` 命令跑测试用例。直到有次需要排查 CI 环境下的偶发失败用例,同事教我用了 `-v` 和 `--lf` 参数,才发现原来 pytest 的命令行藏着这么多提升效率的利器。这些参数就像瑞士军刀的不同工具组件,针对各种测试场景都能找到趁手的解决方案。
通过命令行参数,我们可以实现:
- 精确控制测试范围(按目录/文件/用例名过滤)
- 灵活调整输出信息详细程度
- 快速复现失败用例
- 动态修改测试行为
- 生成定制化测试报告
下面这些参数都是我多年实践中高频使用的,每个都配有真实场景的使用示例和避坑指南。
## 2. 基础参数:测试执行控制
### 2.1 用例筛选三剑客
```bash
pytest tests/module/test_api.py::TestClass::test_method
这是最精准的用例定位方式,通过 :: 分隔实现从文件到方法的级联定位。有次排查线上问题需要单独验证某个支付接口,用这个参数直接定位到 test_payment.py 里的特定方法,省去了注释其他用例的麻烦。
路径匹配的隐藏技巧:
- 使用
*通配符匹配多个文件:pytest tests/module/*_test.py - 通过
-k表达式筛选用例名:bash复制这个表达式会跳过所有包含 "slow" 或 "integration" 标签的用例。曾经在调试时用这个快速过滤掉耗时长的性能测试。pytest -k "not slow and not integration"
注意:Windows 系统下路径分隔符要用
\转义,建议统一使用/避免兼容问题
2.2 失败用例重跑机制
bash复制pytest --lf # 只运行上次失败的用例
pytest --ff # 先运行失败用例,再跑其他用例
这两个参数是调试神器。特别是当你有 2000+ 测试用例但只有 3 个失败时,--lf 能节省 90% 以上的执行时间。有次 CI 环境偶发失败,我用 --ff 反复验证了 20 次才捕捉到那个出现概率 5% 的竞态
