使用py.test进行覆盖不包括导入

发布于 2021-01-29 17:23:59

对于绝地,我们想生成测试覆盖率

我们正在使用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中修复它。它是公开可用的。

关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    @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它可以加快您的覆盖率报告。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看