假设有一个位于 module.py
中的待测试函数:
def f(a, b):
return (a - b) if a > b else 1 / 0
同时,我们在test_module.py
中有以下测试用例:
from unittest import TestCase
from module import f
class ModuleTestCase(TestCase):
def test_a_greater_than_b(self):
self.assertEqual(f(10, 5), 5)
如果我们使用启用了“分支覆盖率”的HTML输出报告功能的pytest
运行测试:
pytest test_module.py --cov=. --cov-branch --cov-report html
这份报告声称覆盖了100%的分支,并且所有“部分”分支都已经覆盖:
但是,很明显我们根本没有涉及到else 1 / 0
部分。
有没有一种改进报告的方法可以查看三元运算符中未被覆盖的部分?
if
/else
的运算符版本不是控制结构而是布尔运算。实际的控制结构隐藏在操作的实现中,超出了覆盖范围的视线之外。我认为将其实现到coverage
包中是一个好主意。 - Klaus D.