Pytest 2.5.2覆盖率报告必须处理的缺失行

时间:2014-03-03 12:30:06

标签: python django pytest

我在Python中有一个小宠物项目我想做报道。我跑的时候

py.test -x -s MYPACKAGE --cov-report html --cov MYPACKAGE

它显示我覆盖范围内缺少大量的行。主要是导入和类/方法定义。 Screenshot

我确信所有这些线都在我的单元测试中处理,第19和31-35行验证了这一点。

为什么py.test将所有定义标记为"缺少"?

2 个答案:

答案 0 :(得分:4)

常见原因是模块conftest.py提前导入应测量的模块。测试配置应在测试之前进行评估。有时候这种依赖性很难被删除。这就是为什么许多答案都建议如何规避pytest-cov扩展的原因:
answer 1answer 2

答案 1 :(得分:2)

  

为什么py.test将所有定义标记为“缺失”?

覆盖率报告是正确的,因为在测试实际开始之前,所有这些行都是导入的。


  

我确信所有这些线都在我的单元测试中处理,第19和31-35行验证了这一点。

在加载时评估所有第一类对象,包括导入,全局变量,带有参数的函数定义,以及带有方法,属性和参数的类定义。

第19行和第31-35行作为单元测试的一部分进行处理,但表示其他部分。