a_g*_*est 5 python pytest pytest-cov
我正在使用覆盖率插件(pytest --cov)运行 pytest,并在报告中得到以下行:
Name Stmts Miss Branch BrPart Cover Missing
---------------------------------------------------------
foo.py 5 1 2 1 71% 3->5, 5
Run Code Online (Sandbox Code Playgroud)
我知道这3-5意味着它错过了第 3 行到第 5 行,但我不知道是什么->意思。从测试逻辑来看,我预计只会5被报告。作为参考,这是我使用的代码:
Name Stmts Miss Branch BrPart Cover Missing
---------------------------------------------------------
foo.py 5 1 2 1 71% 3->5, 5
Run Code Online (Sandbox Code Playgroud)
覆盖范围收集代码中从一行(源)到另一行(目标)的转换对。在某些情况下,某些转换可能会被跳转,例如在条件语句或中断语句中,然后它将被测量为缺失分支(或缺失转换)。
例如,在您的代码中存在一个可以跳转的转换。
if type(self) == type(other):
return False
return NotImplemented
Run Code Online (Sandbox Code Playgroud)
看到从第 3 行到第 5 行是一个不一定会发生的转换,因为可能存在该if语句不计算为的情况False情况。因此,由于缺少从第 3 行到第 5 行的跳转,分支覆盖率会将这段代码标记为未完全覆盖。
分支机构覆盖如何运作。https://coverage.readthedocs.io/en/latest/branch.html#how-it-works