## 06|测试不是负担:Pytest 驱动的回归防线搭建
06|测试不是负担:Pytest 驱动的回归防线搭建
文章目录
- 06|测试不是负担:Pytest 驱动的回归防线搭建
- 摘要
- SEO 摘要
- 目录
- 先测什么
- Pytest 三种高性价比用法
- 代码示例
- 门禁策略
- 指标对比示例
- 结尾互动问题
- 测试体系流程图
- 深度重构:为什么“写了测试”仍然挡不住事故
- 提升测试投入产出比的方法
- 门禁策略建议
- 案例复盘:事故后如何把问题固化成测试资产
- 常见问题 FAQ
- 实战结论
- 附录:测试资产建设建议
- 版权声明
摘要
“上线后才发现老功能被改坏”是很多团队最头疼的事。
这篇文章围绕 Pytest 给出一套能快速落地的回归防线:规则测试、参数化测试、外部依赖 Mock。
重点是把回归从人工重复操作,变成稳定可执行的自动流程。
SEO 摘要
围绕 Python 测试工程化,介绍如何使用 Pytest 构建回归防线,包括参数化测试、外部依赖 Mock 和测试门禁策略。适合希望降低回归故障、提升交付稳定性的后端团队。
目录
- 先测什么
- Pytest 三种高性价比用法
- 代码示例
- 门禁策略
先测什么
优先级建议:
- 资金、库存、权限等核心规则。
- 高频调用接口。
- 曾经出过事故的功能点。
Pytest 三种高性价比用法
- 基础断言:快速验证业务函数。
- 参数化:用少量代码覆盖多分支。
- Mock:隔离第三方依赖,保障测试稳定。
代码示例
# app.pydefcalc_discount(amount:float,level:str)->float:iflevel=="vip":returnround(amount*0.8,2)iflevel=="svip":returnround(amount*0.7,2)returnamount# test_app.pyimportpytestfromappimportcalc_discountdeftest_discount_vip():assertcalc_discount(100,"vip")==80@pytest.mark.parametrize("amount, level, expected",[(100,"svip",70),(88.8,"normal",88.8)],)deftest_discount_cases(amount,level,expected):assertcalc_discount(amount,level)==expected门禁策略
- 本地提交前执行:
pytest -q。 - CI 规则:关键目录测试失败禁止合并。
- 每次线上事故都要补一条“防复发用例”。
指标对比示例
| 指标 | 建设前 | 建设后 | 结论 |
|---|---|---|---|
| 回归测试耗时 | 4 小时 | 22 分钟 | 回归效率提升明显 |
| 上线后回归缺陷/月 | 9 个 | 2 个 | 质量显著改善 |
| 核心规则覆盖率 | 35% | 85% | 风险前移成功 |
结尾互动问题
- 你们当前的测试主要卡在用例数量还是环境稳定性?
- 每次线上事故后,是否都补了防复
