六个模块使用nosetests导致测试覆盖问题

时间:2014-03-10 21:48:53

标签: python python-nose

我正在使用nosetestscoverage扩展来衡量单位测试的覆盖率。

我最近开始将six模块包含在我的软件包中,以方便用户使用。

问题是在本地使用six似乎搞砸了覆盖率报告。

我像这样运行我的测试:

nosetests --cover-erase --with-coverage --cover-html --cover-package seaborn

报告最终包括对我目录树中不存在的文件的引用:

Name                    Stmts   Miss  Cover   Missing
-----------------------------------------------------
ConfigParser              391    391     0%   90-753
HTMLParser                306    306     0%   11-472
Queue                     125    125     0%   3-244
copy_reg                  105    105     0%   7-188
htmlentitydefs              9      9     0%   4-273
httplib                   704    704     0%   69-1342
repr                      103    103     0%   3-132
seaborn                     9      0   100%
<...>

我认为six导致问题的原因是,当我搜索这些名称时,它们只显示在six.py中:

$ git grep ConfigParser
seaborn/external/six.py:    MovedModule("configparser", "ConfigParser"),

$ git grep copy_reg
seaborn/external/six.py:    MovedModule("copyreg", "copy_reg"),

我的代码中的任何一点都不会从6中导入*,我的所有导入都是特定的,例如from .external.six.moves import range

如何从覆盖率报告中排除这些对象/文件?

我已尝试将omit = seaborn/external添加到我的.coveragerc[run]下),这会从报告中排除seaborn/external中的文件,但不包括six中的文件{1}}似乎正在定义。

1 个答案:

答案 0 :(得分:0)

将它放入你的.coveragerc中。

[run]
include = seaborn/*

配置文档 - http://nedbatchelder.com/code/coverage/config.html#config