在我的项目中,有一个文件夹包含项目所有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
输出有关numpy
和scipy
模块的覆盖率统计信息吗?
答案 0 :(得分:1)
您可以使用以下语法从scipy导入统计信息:
import scipy.stats
scipy.stats.foo()
您可以使用--cover-package选项限制覆盖率报告。因此,如果您的代码在app包中,则调用将是:
nosetests --with-coverage --cover-package=app tests/