我正在使用nosetests
和coverage
扩展来衡量单位测试的覆盖率。
我最近开始将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}}似乎正在定义。
答案 0 :(得分:0)
将它放入你的.coveragerc中。
[run]
include = seaborn/*
配置文档 - http://nedbatchelder.com/code/coverage/config.html#config