我正在使用coverage.py工具来获得python代码的覆盖率。如果我像下面这样使用没有分支标志的命令,
coverage run test_cmd我收到这样的报道,
Name Stmts Miss Cover
--------------------------------------------------------------------------------------------------------------------------
/path/file.py 9 2 78%由此,我了解到覆盖率百分比值的推导如下:
cover = (Stmts Covered/total stmts)*100 = (9-2/9)*100 = 77.77%但是,当我在启用了-分支标志的情况下运行覆盖率时
coverage run --branch test_cmd我收到这样的报道,
Name Stmts Miss Branch BrPart Cover
----------------------------------------------------------------------------------------------------------------------------------------
/path/file.py 9 2 2 1 73%从这份报告中,我无法理解用于获得Cover=73%的公式
这个数字是怎么来的,这个值对代码覆盖率是否正确?
发布于 2022-05-18 08:42:27
虽然您可能不应该过多地担心确切的数字,但下面是计算它们的方法:
从你给出的输出来看,我们有:
n_statements = 9
n_missing = 2
n_branches = 2
n_missing_branches = 1然后进行计算(我稍微简化了语法,在实际代码中,所有东西都隐藏在属性后面)。
n_executed = n_statements - n_missingn_executed_branches = n_branches - n_missing_branchesnumerator = n_executed + n_executed_branches
denominator = n_statements + n_brancheshttps://github.com/nedbat/coveragepy/blob/master/coverage/results.py#L215-L222
pc_covered = (100.0 * numerator) / denominator现在将所有这些放在一个脚本中,添加print(pc_covered)并运行它:
72.72727272727273当然,它是舍入,所以这里有您的73%。
https://stackoverflow.com/questions/72285237
复制相似问题