使用py.test进行覆盖不包括导入
我们正在使用py.test作为测试运行程序。但是,我们无法将导入和其他“导入的”内容添加到报告中。例如__init__.py
,始终报告为已发现:
Name Stmts Miss Cover
--------------------------------------------------
jedi/__init__ 5 5 0%
[..]
显然,此文件正在导入,因此应报告为已测试。
我们开始这样的测试[*]:
py.test --cov jedi
如您所见,我们正在使用pytest-coverage
。
那么如何正确地计算文件的覆盖率__init__.py
呢?
[*]我们还尝试了不带--doctest-
modules
(从中删除pytest.ini
)的开始测试,并通过较早地激活了coverage模块py.test -p pytest_cov
--cov jedi
。他们都不工作。
我提供了赏金。请尝试在Jedi中修复它。它是公开可用的。
-
@hynekcer给了我正确的主意。但基本上,最简单的解决方案是在其他地方:
摆脱
pytest-cov
!采用
coverage run --source jedi -m py.test coverage report
代替!!!这样,您只需在当前py.test配置上运行覆盖范围,即可正常运行!从哲学上讲,这也是正确的方法:使每个程序都能做得很好-
py.test
运行测试并coverage
检查代码覆盖率。现在,这听起来像是咆哮,但确实如此。
pytest-cov
暂时无法正常工作。某些测试失败了,只是因为我们使用了它。
截至 2014年 ,pytest-cov似乎已经易手。
py.test --cov jedi test
似乎又是一个有用的命令(请看注释)。但是,您不需要使用它。但结合使用xdist
它可以加快您的覆盖率报告。