测试覆盖swig编译的c++ /Python代码

Test coverage from SWIG-compiled C++/Python code

本文关键字:Python 代码 c++ swig 编译 测试覆盖      更新时间:2023-10-16

我有一个经典的SWIG设置,其中从Python调用了一堆c++函数。现在,在添加了一些测试(在Python中)之后,我想获得c++源代码的测试覆盖率。经典的Python方法是

nosetests --with-coverage --cover-package=mypackage

,但这只适用于本地Python模块。实际上,这将返回SWIG生成的mypackage.py文件的覆盖率。

由于我需要覆盖c++文件(/SWIG生成的共享库),因此当然需要在编译和链接器标志中添加--coverage。但我不知道该怎么做。

提示吗?

遇到了类似的问题,但是用的是C代码。它与SWIG部分无关,只需要用覆盖工具编译c++代码并执行它。我用了gcovgcovr

对于gcov,要使其工作,使用以下标志编译代码(启用gcov插装)

CFLAGS_VAL += - 0——coverage

然后,执行测试。在测试运行之后,应该生成.gcno和.gcda文件。

要创建覆盖率报告,从根文件夹

运行

gcovr -r。——filter="——html——html-details -o coverage/coverage.html

GCOV docs, here

同样可以用lcov创建,遵循本wiki页面中的示例