Nosetest覆盖范围未显示以Test开头的类

时间:2017-11-16 09:07:27

标签: python code-coverage nose

使用以下命令生成使用nosetest的覆盖率报告:

nosetests --exe --with-coverage --cover-html --cover-package=Mypackage Tests/

在我的测试中,我使用了一些类,几乎所有的类都被找到了,除了一个叫做:

的类
TestCasesFilter

在尝试了一些问题之后,我发现当我将类重命名为其他东西时,例如OneTestCasesFilter,该类被添加到覆盖率报告中。 我们的命名约定要求我们在写入的数据库中的表之后命名该类,在本例中为TestCases。是否可以在不重命名类的情况下将类添加到coverage报告中?

我正在使用:

python 2.7.14
coverage 4.4.1
nose 1.3.7

1 个答案:

答案 0 :(得分:0)

背景

我的设置与您的设置略有不同,但我遇到了类似的问题。我在我的python包的根目录中有一个setup.cfg文件,如下所示:

[nosetests] with-coverage=1 cover-xml=1 cover-xml-file=coverage.xml cover-package=companyname

使用这个setup.cfg文件,我没有看到companyname / test_base.py出现在报告结尾的nosetests吐出的覆盖率报告中。然而,当我运行coverage report时,我看到它出现了,所以我知道正在收集数据。

我的修复

the documentation我看到了几个可能的修复方案。我能够通过将cover-tests=1添加到我的setup.cfg文件来解决此问题。文档将此选项描述为

--cover-tests Include test modules in coverage report

看起来像鼻子使用什么算法来确定什么是“测试”不是很聪明,也许只看一下类名

您的修复

由于您使用命令行传递选项,我认为您需要在调用nosetests时添加--cover-tests