我正在使用nosetests来自动发现和运行我的单元测试。我还想让它生成报道报告。
当我使用以下命令运行nosetests时,一切正常
nosetests .
我在网上查询生成覆盖率,nosetests有一个命令行参数--with-coverage
。我还使用nosetests --help
仔细检查了此命令是否存在。但是,每当我运行以下命令时,我都会得到以下输出
nosetests --with-coverage .
Usage: nosetests [options]
nosetests: error: no such option: --with-coverage
我仔细检查了通过运行
安装了coverage插件nosetests --plugins
封面显示在列表中以及一堆其他插件。
我也知道我安装了覆盖,因为我可以使用以下内容手动运行覆盖数据集:
coverage run test.py
我是否滥用了--with-coverage选项?或者还有其他我想念的东西?
提前致谢。
答案 0 :(得分:3)
您的语法是正确的。这可能是您的环境问题,请仔细检查您的python环境以及安装了鼻子和覆盖范围的位置。作为完整性检查,您可以快速设置新的virtualenv,安装鼻子,并使用coverage选项运行命令。
答案 1 :(得分:3)
我从未让命令行选项正常工作。我做了Janne Karila建议的并在我的项目主目录中创建了一个setup.cfg文件。一旦我有了这个文件,我就可以运行没有参数的nosetests,一切都会运行。
尝试创建文档时遇到的一个问题是我无法弄清楚配置中允许的参数。但事实证明,可以使用此处列出的任何命令https://nose.readthedocs.org/en/latest/usage.html#options。在命令之前留下双破折号。
作为参考,我当前的配置文件是
[nosetests]
verbosity=1
detailed-errors=1
with-coverage=1
cover-erase=1
cover-package=application
cover-html=1
cover-html-dir=htmlcov
where=tests
此配置文件表示使用coverage,删除上一次运行的覆盖范围,仅报告应用程序包中的文件,并将html报告输出到htmlcov目录。
希望将来可以帮助其他人。
答案 2 :(得分:3)
从nose 1.3.7
开始 - most recent version available on Pypy - 该命令不存在:
https://github.com/nose-devs/nose/blob/release_1.3.7/nose/plugins/cover.py
看起来文档是从项目的master
分支生成的,确实有这些选项:
https://github.com/nose-devs/nose/blob/master/nose/plugins/cover.py
可以做的是从主分支安装nose
,如下所示:
pip install git+https://github.com/nose-devs/nose@master --upgrade
它会说它刚刚安装了1.3.7
,但这仅仅是因为版本尚未在项目setup.py
文件中出现问题:https://github.com/nose-devs/nose/blob/master/setup.py#L4
请记住,您刚刚安装了未发布的nose
版本,可能还有其他错误。