nosetests无法使用virtualenv导入覆盖率

时间:2016-08-07 00:30:06

标签: python-2.7 virtualenv nose

我已将nosecoverage安装到我的虚拟环境中,但它无法正常工作

(venv) ../my_cookbook$ nosetests --with-coverage

nose.plugins.cover: ERROR: Coverage not available: unable to import coverage module

我想知道它是否以某种方式逃离了我的venv,所以我尝试了它并且它有效!

(venv) ../my_cookbook$ ./venv/bin/nosetests --with-coverage

然后我想知道我的路径是否有些混乱。

(venv) ../my_cookbook$ which nosetests

/home/peter/Projects/my_cookbook/venv/bin/nosetests

(venv) ../my_cookbook$ which coverage

/home/peter/Projects/my_cookbook/venv/bin/coverage

那么这里发生了什么?不知怎的,鼻子测试命令正在逃避我的虚拟现实,但我不知道如何。

1 个答案:

答案 0 :(得分:1)

不幸的是,我没有解释为什么鼻子插件没有获得覆盖率,但是,通过coverage 执行测试应该是首选,而不是使用测试运行插件(在你的情况下鼻子覆盖插件)。 Quoting Ned Batchelder(报道的作者):

  

使用插件意味着您依赖于该插件的行为是正确且可理解的。在有用的名义下,插件将有自己的逻辑,在编写时可能是最好的想法,但测试运行器和/或coverage.py可能在此期间发生了变化。插件往往不像其他组件那样维护良好。如果你可以避免它们,你可以少考虑一下。

换句话说,运行:

$ coverage run -m nose

并获取报道报告:

$ coverage report