显示两个测试覆盖率运行中的差异

时间:2013-03-04 18:54:25

标签: python code-coverage coverage.py

我正在为一些旧的和不同的代码编写测试。我发现coverage.py是一个有用的工具,可以帮助我决定下一个要写的测试。随着我改进测试,我想看看我是如何影响我们的测试的。

目前我这样做是通过在并排的浏览器窗口中两次调出html报告,并在视觉上寻找差异。这似乎很粗糙。你们中有人有更好的解决方案吗?

我找到z3c.coverage,在努力让zope-testrunner使用我们的测试后,发现它只报告回归而不是改进。我可以将输入反过来,这样改进看起来就像回归一样,但是向其他人展示会很困惑。

2 个答案:

答案 0 :(得分:1)

Coverage.py没有差异功能。听起来很酷,想要提供补丁吗? :)

答案 1 :(得分:0)

我处于类似情况。我想看看覆盖率是否下降。 没有直接的方法来获得它。 因此,我写了一些python脚本和一个shell脚本。我工作正常,现在有了詹金斯。

步骤

  1. 存储先前的报告和当前的报告(诸如report.prev和report.curr之类的东西)

报告文本格式:(这是默认格式,很容易解析)

Name                                     Stmts   Miss  Cover
------------------------------------------------------------------------------
my/project/example.py                     3      3     0%
  1. 将报告解析为地图 其中键的值为{filename:coverage_percentage}

    示例:

previous_run = { 
    '/my/filename.py' : '67', 
    '/one/more/file.py' : '89'
}

current_run = {
    '/my/filename.py' : '67',
    '/one/more/file.py' : '89'
}
  1. 然后我们可以比较这些地图(current_run,previous_run)

  2. 在生成新报告时,滚动文件:含义是,将当前报告文件移至上一个(“ mv report.curr report.prev”),然后将新文件移至report.curr

我已经在此处进行了完整的实现: https://github.com/diganthdr/handytools 参见(coverage_compare.py)

相关问题