coverage测试覆盖率分析及TDD实践指南
请介绍Python测试覆盖率工具coverage.py的用法,以及测试驱动开发(TDD)的核心流程和最佳实践。
回答
我是大山
coverage.py使用:
# 安装
pip install coverage
# 运行测试并收集覆盖率
coverage run -m pytest tests/
# 查看报告
coverage report -m # 终端报告(含未覆盖行号)
coverage html # HTML报告(在htmlcov/目录)
coverage xml # XML报告(CI/CD集成)
.coveragerc配置:
[run]
source = my_project
omit = */tests/*,*/migrations/*
[report]
show_missing = true
fail_under = 80
TDD(测试驱动开发)流程:
- 红(Red):先写测试,运行测试→失败
- 绿(Green):写最少代码让测试通过
- 重构(Refactor):优化代码,确保测试仍通过
最佳实践:
- 覆盖率目标:核心逻辑≥90%,整体≥80%
- 不是所有代码都需要测试(配置、简单getter除外)
- 关注分支覆盖率(
coverage run --branch) - 结合CI/CD自动运行测试和覆盖率检查
- 对边界条件、异常路径、空值场景重点测试
- 使用
# pragma: no cover排除特定代码行