You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用coverage.py按Gitlab逻辑计算总测试覆盖率生成anybadge徽章

操作方法

Gitlab内置的coverage.py覆盖率统计逻辑,默认取的是总语句覆盖率,计算规则为「已覆盖可执行语句数 / 总可执行语句数」,默认保留2位小数,按以下步骤操作即可得到完全对齐Gitlab逻辑的覆盖率数值:

  • 第一步:运行测试生成coverage数据
    执行测试前用coverage命令启动测试 runner,示例(以pytest为例,其他测试框架替换对应测试启动命令即可):
    coverage run -m pytest
    执行完成后会在当前目录生成.coverage数据文件。
  • 第二步:提取总覆盖率数值
    有两种常用提取方式,可根据你的需求选择:
    • 直接获取带百分号的标准格式数值(适配徽章生成场景):
      执行命令:
      coverage report --precision=2 | grep 'TOTAL' | awk '{print $NF}'
      输出结果示例:89.76%,和Gitlab默认展示的格式完全一致。
    • 获取纯数字格式(适配后续二次计算场景):
      如果使用的是5.5及以上版本的coverage.py,可以直接执行:
      coverage report --format=total
      输出结果示例:89.76,无百分号后缀。
  • 第三步:生成徽章
    拿到数值后直接传给anybadge生成对应的徽章文件即可,示例命令:
    anybadge -l "测试覆盖率" -v "89.76%" -c green coverage.svg
    生成的svg文件可以作为CI构件存储,也可以直接放到项目目录中,在README里引用即可。

对齐注意事项

如果需要和Gitlab默认分支展示的覆盖率数值完全一致,需要保证你的coverage配置(比如排除的文件路径、是否开启分支覆盖率统计等)和Gitlab CI中运行的配置完全相同。如果你的Gitlab项目配置了统计分支覆盖率,提取数值时对应替换为分支覆盖率的统计值即可。

内容的提问来源于stack exchange,提问作者Cord Kaldemeyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 18:06:03