7

我正在尝试使用 coverage.py 来查找针对服务器进程执行的功能测试的覆盖率,使用 .pyc 文件部署。似乎报道不支持这一点。

为了解决这个问题,我创建了一个简单的 .py 模块,它调用其他 pyc 文件,为此我将源文件提供到一个单独的文件夹中:

coverage run --source=../src main.py

我收到的信息是

Coverage.py warning: No data was collected.

任何指针?

4

2 回答 2

2

事实上,coverage 3.6 目前不支持使用 pyc 文件运行。请参阅https://bitbucket.org/ned/coveragepy/issue/264/coverage-wont-run-pyc-files

诀窍是创建一个使用 pyc 文件的简单“驱动程序”源文件,例如问题正文中的 main.py。在报告时,您需要将源文件和执行的 pyc 文件配对。

在这里如何做到这一点(我的编译文件存储在当前文件夹(pyc)和../src中的源文件):

[root@host pyc]# cat .coveragerc
[run]
parallel = true

[paths]
mysources =
    ../src
    /root/lucian/coverage/module1/pyc

[root@host pyc]# coverage run main.py
[root@host pyc]# coverage combine
[root@host pyc]# coverage report
Name                                                     Stmts   Miss  Cover
----------------------------------------------------------------------------
/root/lucian/coverage/module1/src/main                       1      0   100%
/root/lucian/coverage/module1/src/test_coverage_callee       3      0   100%
/root/lucian/coverage/module1/src/test_coverage_caller       3      0   100%
----------------------------------------------------------------------------
TOTAL                                                        7      0   100%

请注意,[paths] 下的第 3 行必须是完整路径(另一个覆盖缺陷)。

感谢 Ned 在报道邮件列表中帮助我完成了这项工作。

于 2013-09-25T13:24:47.733 回答
0

目前,coverage.py 必须有权访问 .py(源)文件才能进行报告。Ned 告诉我有一张票可以让这在未来成为可能。

于 2013-09-22T01:51:05.657 回答