You need to enable JavaScript to run this app. 如何通过正则表达式提取coverage.py生成的测试覆盖率总百分比数值
优惠活动
大模型
产品
解决方案
定价
更多

如何通过正则表达式提取coverage.py生成的测试覆盖率总百分比数值

sed提取coverage.py日志总覆盖率数值方案

直接可用的命令

你可以直接使用以下sed语句完成数值提取:

COVERAGE_SCORE=$(sed -rn 's/^TOTAL.*[[:space:]]+([0-9]+)%$/\1/p' coverage37.log)
echo "Coverage is $COVERAGE_SCORE"

命令说明

  • -n:关闭sed默认全量输出逻辑,仅输出匹配处理后的内容
  • -r:启用扩展正则表达式,无需额外转义元字符,兼容性和可读性更高
  • 替换规则拆解:
    • 匹配以TOTAL开头的行,过滤所有无关日志内容
    • 自动跳过TOTAL行中从行首到最后一个百分号前的所有内容,兼容不同版本coverage输出的空格数量差异
    • 捕获行尾百分号前的数字,直接输出数值,自动丢弃百分号

注意事项

如果你的coverage配置输出的覆盖率带小数(例如98.7%),只需要将正则中的[0-9]+调整为[0-9.]+即可同时捕获整数和小数部分。

后续生成徽章示例

拿到数值后可直接传入anybadge生成自定义徽章,还可根据数值自动切换徽章颜色:

# 覆盖率≥90为绿色,70-89为橙色,低于70为红色
BADGE_COLOR=$(if [ $COVERAGE_SCORE -ge 90 ]; then echo "green"; elif [ $COVERAGE_SCORE -ge 70 ]; then echo "orange"; else echo "red"; fi)
anybadge -l "覆盖率" -v "${COVERAGE_SCORE}%" -c $BADGE_COLOR -o coverage.svg

内容的提问来源于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.09 21:48:01