将命令行生成的python .coverage文件与PyDev集成

2 投票
2 回答
1724 浏览
提问于 2025-04-11 19:47

我的构建环境已经设置好,可以在命令行中编译、运行并生成覆盖率文件(我使用的是Ned Batchelder的coverage.py工具)。

我在用Eclipse配合PyDev作为我的编辑器,但出于实际考虑,我不能也不方便把整个构建环境都转到Eclipse上(这样就不能直接从IDE生成覆盖率数据了,因为它是这样设计的)。

PyDev似乎也在使用同样的覆盖工具(或者是类似的工具)来生成覆盖信息,所以我在想,应该有办法把我外部的覆盖文件整合进Eclipse/PyDev里。

有没有人知道怎么做呢?

2 个回答

3

我对PyDev如何集成coverage.py(或者说它是否使用coverage.py)并不了解,但.coverage文件其实很简单。它们是经过处理的字典。

我没有测试过这段代码,不过你可以试试这个方法,把两个.coverage文件合并成一个:

import marshal
c1_dict = marshal.load(open(file_name_1, 'rb'))
c2_dict = marshal.load(open(file_name_2, 'rb'))
c1_dict.update(c2_dict)
marshal.dump(c1_dict, open(file_name_out, 'wb'))
3

我之前正好需要这样的东西,那时候PyDev用的coverage.py版本比脚本作者页面上提供的旧。

我做的就是找出PyDev把.coverage文件保存在哪里。对我来说,它的位置是:

 C:\Users\Admin\workspace\.metadata\.plugins\org.python.pydev.debug\.coverage

然后我手动从一个单独的脚本运行了一个新版本的coverage.py,并告诉它把.coverage文件保存到PyDev保存的那个地方。我记不清楚是不是用命令行参数给coverage.py传了这个位置,还是我只是用脚本复制了.coverage文件,但之后只要打开代码覆盖率结果视图,点击刷新覆盖信息!,PyDev就会像自己生成了这个文件一样,顺利处理这些数据。

撰写回答