鼻子框架:避免在覆盖范围内包含scipy.stats

时间:2014-02-23 10:50:53

标签: python unit-testing python-import nose nosetests

在我的项目中,有一个文件夹包含项目所有python模块的测试。测试通过unittest实现。

当我想测试代码时,我使用nose,然后从终端运行:

$ cd test_folder/
$ nosetests

一切都好。当我想获得有关测试执行的代码覆盖率的信息时,我运行以下

$ nosetests --with-coverage

但是,在我的一个.py模块中,我使用了scipy.stats模块,我通过

导入
from scipy import stats

因为

import scipy
scipy.stats.foo()

not work。问题是,当我使用coverage运行测试时,也会为整个scipy和事件numpy模块打印覆盖率分析。因此,覆盖测试的输出是不可读的:关于这些模块的覆盖范围的数百行。

输出示例:

...
numpy.polynomial.polytemplate                     6      1    83%   16
numpy.polynomial.polyutils                       73     53    27%   76-80, 106-112, 156-179, 226-234, 274-280, 323-327, 392-394
numpy.random                                      9      1    89%   98
numpy.random.info                                 2      0   100%   
numpy.version                                     7      1    86%   10
...
scipy.interpolate.info                            1      0   100%   
scipy.io.info                                     1      0   100%   
scipy.lib                                         3      0   100%   
scipy.lib.blas                                   49     36    27%   16-17, 26-65
scipy.lib.blas.info                               0      0   100%   
scipy.lib.info                                    1      0   100%   
...

您知道如何避免nosetests --with-coverage输出有关numpyscipy模块的覆盖率统计信息吗?

1 个答案:

答案 0 :(得分:1)

您可以使用以下语法从scipy导入统计信息:

import scipy.stats
scipy.stats.foo()

您可以使用--cover-package选项限制覆盖率报告。因此,如果您的代码在app包中,则调用将是:

nosetests --with-coverage --cover-package=app tests/
相关问题