我在Python中有一个小宠物项目我想做报道。我跑的时候
py.test -x -s MYPACKAGE --cov-report html --cov MYPACKAGE
它显示我覆盖范围内缺少大量的行。主要是导入和类/方法定义。
我确信所有这些线都在我的单元测试中处理,第19和31-35行验证了这一点。
为什么py.test
将所有定义标记为"缺少"?
答案 0 :(得分:4)
常见原因是模块conftest.py
提前导入应测量的模块。测试配置应在测试之前进行评估。有时候这种依赖性很难被删除。这就是为什么许多答案都建议如何规避pytest-cov
扩展的原因:
answer 1和answer 2
答案 1 :(得分:2)
为什么py.test将所有定义标记为“缺失”?
覆盖率报告是正确的,因为在测试实际开始之前,所有这些行都是导入的。
我确信所有这些线都在我的单元测试中处理,第19和31-35行验证了这一点。
在加载时评估所有第一类对象,包括导入,全局变量,带有参数的函数定义,以及带有方法,属性和参数的类定义。
第19行和第31-35行作为单元测试的一部分进行处理,但不表示其他部分。