关于python:为什么nose测试说–with-coverage不是一个选择?

Why does nosetests say --with-coverage is not an option?

我正在使用nose测试自动发现并运行我的单元测试。我还希望它生成覆盖率报告。

当我使用以下命令运行nose测试时,一切都很好

1
nosetests .

我在线查找生成覆盖率的项目,nosetests有一个命令行参数--with-coverage。我还使用nosetests --help再次检查了此命令是否存在。但是,每当我运行以下命令时,我都会得到以下输出

1
2
3
4
nosetests --with-coverage .
Usage: nosetests [options]

nosetests: error: no such option: --with-coverage

我通过运行

再次检查了coverage插件是否已安装

1
nosetests --plugins

coverage与其他插件一起显示在列表中。

我也知道我已经安装了coverage,因为我可以使用类似以下内容的方式手动运行coverage数据收集:

1
coverage run test.py

我是否滥用--with-coverage选项?还是我还缺少其他东西?

预先感谢。


我从未使命令行选项起作用。我做了Janne Karila的建议,并在我的项目主目录中创建了setup.cfg文件。一旦有了该文件,我就可以不带任何参数地运行nose测试,一切都会运行。

在尝试创建文档时遇到的一个问题是我无法弄清楚配置中允许使用哪些参数。但是事实证明,可以使用此处列出的任何命令https://nose.readthedocs.org/en/latest/usage.html#options。只需在命令前保留双破折号即可。

作为参考,我当前的配置文件是

1
2
3
4
5
6
7
8
9
[nosetests]
verbosity=1
detailed-errors=1
with-coverage=1
cover-erase=1
cover-package=application
cover-html=1
cover-html-dir=htmlcov
where=tests

此配置文件说使用覆盖率,擦除前一次运行的覆盖率,仅报告应用程序包中的文件以及将html报告输出到htmlcov目录。

希望这会在将来对其他人有所帮助。


nose 1.3.7开始-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

您可以做的是像这样从master分支安装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的未发行版本,可能还有其他错误。


您的语法正确。这可能与您的环境有关,请仔细检查python环境以及安装了nose和覆盖物的位置。作为健全性检查,您可以快速设置一个新的virtualenv,安装nose,并使用coverage选项运行命令。