111、代码覆盖率实战:coverage.py、分支覆盖、HTML 报告与 CI 门禁

📅 2026/7/2 13:35:58
111、代码覆盖率实战:coverage.py、分支覆盖、HTML 报告与 CI 门禁
111、代码覆盖率实战:coverage.py、分支覆盖、HTML 报告与 CI 门禁上周五晚上十一点,我正盯着屏幕上的一个诡异bug——某个API接口在测试环境跑得欢,一上生产就偶尔返回500。查了半天,发现是某个if-else分支在测试里压根没走到。测试同学拍着桌子说“我测了”,但代码覆盖率报告一拉,那个分支赤裸裸地标红。这种“你以为你测了”的错觉,比没测更可怕。今天这篇笔记,就是我从那次事故里扒出来的血泪经验。为什么覆盖率不是万能的,但没有它万万不能先泼盆冷水:100%覆盖率不代表没bug。我见过一个项目,覆盖率95%,但核心业务逻辑里有个条件判断写反了,因为测试数据恰好让两个分支结果一样,所以绿油油一片。覆盖率是告诉你“哪些代码没被测试摸过”,而不是“哪些代码是对的”。但反过来,如果你连覆盖率都不看,那就像闭着眼睛开车——撞了才知道。coverage.py 入门:别只跑coverage run很多人装完coverage.py,上来就coverage run -m pytest,然后coverage report看个百分比就完事了。这跟没测差不多。我习惯这样玩:# 先跑测试,带上分支覆盖和上下文信息/