首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在coverage.py中启用分支覆盖时如何计算覆盖率百分比

在coverage.py中启用分支覆盖时如何计算覆盖率百分比
EN

Stack Overflow用户
提问于 2022-05-18 07:56:22
回答 1查看 298关注 0票数 0

我正在使用coverage.py工具来获得python代码的覆盖率。如果我像下面这样使用没有分支标志的命令,

代码语言:javascript
运行
复制
coverage run test_cmd

我收到这样的报道,

代码语言:javascript
运行
复制
Name                                                                              Stmts   Miss  Cover
--------------------------------------------------------------------------------------------------------------------------
/path/file.py                                                                      9      2    78%

由此,我了解到覆盖率百分比值的推导如下:

代码语言:javascript
运行
复制
cover = (Stmts Covered/total stmts)*100 = (9-2/9)*100 = 77.77%

但是,当我在启用了-分支标志的情况下运行覆盖率时

代码语言:javascript
运行
复制
coverage run --branch test_cmd

我收到这样的报道,

代码语言:javascript
运行
复制
Name                                                                           Stmts   Miss Branch BrPart  Cover
----------------------------------------------------------------------------------------------------------------------------------------
/path/file.py                                                                    9      2      2      1    73%

从这份报告中,我无法理解用于获得Cover=73%的公式

这个数字是怎么来的,这个值对代码覆盖率是否正确?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-18 08:42:27

虽然您可能不应该过多地担心确切的数字,但下面是计算它们的方法:

从你给出的输出来看,我们有:

代码语言:javascript
运行
复制
n_statements = 9
n_missing = 2
n_branches = 2
n_missing_branches = 1

然后进行计算(我稍微简化了语法,在实际代码中,所有东西都隐藏在属性后面)。

https://github.com/nedbat/coveragepy/blob/a9d582a47b41068d2a08ecf6c46bb10218cb5eec/coverage/results.py#L205-L207

代码语言:javascript
运行
复制
n_executed = n_statements - n_missing

https://github.com/nedbat/coveragepy/blob/8a5049e0fe6b717396f2af14b38d67555f9c51ba/coverage/results.py#L210-L212

代码语言:javascript
运行
复制
n_executed_branches = n_branches - n_missing_branches

https://github.com/nedbat/coveragepy/blob/8a5049e0fe6b717396f2af14b38d67555f9c51ba/coverage/results.py#L259-L263

代码语言:javascript
运行
复制
numerator = n_executed + n_executed_branches
denominator = n_statements + n_branches

https://github.com/nedbat/coveragepy/blob/master/coverage/results.py#L215-L222

代码语言:javascript
运行
复制
pc_covered = (100.0 * numerator) / denominator

现在将所有这些放在一个脚本中,添加print(pc_covered)并运行它:

代码语言:javascript
运行
复制
72.72727272727273

当然,它是舍入,所以这里有您的73%

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72285237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档