我对报告中的覆盖率数据有疑问,不同意。还是仅仅是它的工作方式? 我的例子。 文件functions.py:
class TestClass(object):
def __init__(self, a, b, c, d):
self.a = a
self.b = b
self.c = c
self.d = d
文件tests.py:
def testClassInit():
instance = functions.TestClass(a=1, b=2, c=3, d=4)
assert instance.a == 1
assert instance.b == 2
报告显示,functions.py文件中的所有行都被覆盖了,这不是事实,self.c和self.d则不是。
当我这样做时:
def testClassInit():
instance = functions.TestClass(a=1, b=2, c=3, d=4)
assert instance.a == 1
assert instance.b == 2
assert instance.c == 3
assert instance.d == 4
覆盖范围是相同的。 sb可以向我解释吗?
顺便说一句。在这种情况下,可以在测试中使用这么多的断言吗?
答案 0 :(得分:0)
覆盖率报告只是告诉您在测试期间执行了哪些行。因此,在创建该类的实例时,将执行 init ()中的所有四行。
答案 1 :(得分:0)
覆盖率无法衡量您是否拥有正确的主张。它测量是否执行了行。在您的第一个测试中,将执行__init__
方法中的所有行。实际上,它们都是在测试的第一行执行的。在这种情况下,断言是无关紧要的。
顺便说一句,一次测试中包含许多断言是可以的,只要它们都是关于单个结果的。