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

Python单元测试覆盖率显示异常:如何获取正确的25%覆盖率?

覆盖率计算异常的原因及解决方法

为什么显示62%而不是25%?

coverage.py默认统计的是行覆盖率,不是函数数量的占比。你看到的62%是指被测试用例执行到的代码行数占simple.py总代码行数的比例,而非你以为的「覆盖函数数量/总函数数量」的25%。比如你的multiply函数可能占了更多代码行,其他三个函数的代码行都没被执行,所以行覆盖率显示为62%。

如何获取正确的覆盖率数据?

1. 查看详细行覆盖率(确认哪些行被覆盖)

执行以下命令,终端会直接显示哪些具体代码行未被覆盖,明确行覆盖率的计算依据:

pytest test_simple.py --cov=simple --cov-report=term-missing

2. 获取函数级覆盖率(25%的正确占比)

有两种便捷方式:

  • 生成HTML报告查看:
    执行命令生成交互式HTML报告:
    pytest test_simple.py --cov=simple --cov-report=html
    
    打开生成的htmlcov/index.html文件,切换到「Functions」标签,就能看到函数覆盖率(这里会显示25%,即4个函数中仅1个被覆盖)。
  • 命令行直接查看函数覆盖率:
    执行测试并生成包含函数统计的终端报告:
    pytest test_simple.py --cov=simple --cov-report=term
    
    输出报告里会有类似这样的统计行:
    Name      Stmts   Miss  Cover   Funcs
    -------------------------------------
    simple.py     10      4    60%       1/4
    -------------------------------------
    
    其中Funcs列的1/4就是函数覆盖率(25%)。

3. 补充说明

行覆盖率是行业更常用的覆盖率指标,因为它能反映代码逻辑的实际执行情况(一个函数可能有多个分支,仅进入函数不代表覆盖所有逻辑)。但如果你的需求是统计「已测试函数的数量占比」,就用上面的函数覆盖率查看方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:02:40