7

我正在使用鼻子测试来自动发现和运行我的单元测试。我还想让它生成覆盖率报告。

当我使用以下命令运行鼻子测试时,一切正常

nosetests .

我在网上查到要生成覆盖率,nosetests 有一个命令行参数--with-coverage。我还使用nosetests --help. 但是,每当我运行以下命令时,我都会得到以下输出

nosetests --with-coverage .
Usage: nosetests [options]

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

我通过运行再次检查了覆盖插件是否已安装

nosetests --plugins

覆盖率与许多其他插件一起显示在列表中。

我也知道我已经安装了覆盖,因为我可以使用以下方式手动运行覆盖数据收集:

coverage run test.py

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

提前致谢。

4

3 回答 3

4

我从来没有让命令行选项工作。我按照 Janne Karila 的建议做了,并在我的项目主目录中创建了一个 setup.cfg 文件。一旦我有了那个文件,我就可以运行没有参数的鼻子测试,一切都会运行。

我在尝试创建文档时遇到的一个问题是我无法弄清楚配置中允许使用哪些参数。但事实证明,此处列出的任何命令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

这个配置文件说要使用覆盖率,删除之前运行的覆盖率,只报告应用程序包中的文件,并输出一个 html 报告到 htmlcov 目录。

希望这将有助于将来的其他人。

于 2012-11-10T00:52:57.833 回答
3

你的语法是正确的。这可能是您的环境有问题,请仔细检查您的 python 环境以及安装鼻子和覆盖范围的位置。作为健全性检查,您可以快速设置新的 virtualenv,安装鼻子,并使用覆盖选项运行命令。

于 2012-11-09T08:26:12.900 回答
3

截至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

可以做的是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,可能还有其他错误。

于 2016-03-15T15:12:27.780 回答