def main(p):
if foo_a(p):
return False
return p**2
def foo_a(p):
return p % 11 == 0
现在您可以通过
获得100%的测试覆盖率import unittest
from script import main
class Foobar(unittest.TestCase):
def test_main(self):
self.assertEquals(main(3), 9)
但也许有人希望foo_a
改为p % 2 == 0
。
分支覆盖率会对它有所了解,但我还想知道一个函数是否从未被测试“直接”调用(例如main
),但只是间接地(例如在示例中为foo_a
。
这可能与pytest一起使用吗?
答案 0 :(得分:0)
首先,一般思路是单元测试foo_a
以及
import unittest
from script import main, foo_a
class Foobar(unittest.TestCase):
def test_main(self):
self.assertEquals(main(3), 9)
def test_foo_a(self):
self.assertEquals(foo_a(11), True)
您可能正在寻找可与pytest https://coverage.readthedocs.io/en/coverage-4.5.1/一起使用的https://pypi.org/project/pytest-cov/,此工具可以准确显示测试期间调用的代码行
但我认为还有另一种方法可以检查你的问题它叫做变异测试,这里有一些可以帮助你的库
https://github.com/sixty-north/cosmic-ray
https://github.com/mutpy/mutpy
还要研究基于属性的测试库,如https://github.com/HypothesisWorks/hypothesis/tree/master/hypothesis-python