coverage.py是否正确显示python绑定的测试覆盖率



我对功能测试的测试覆盖率很感兴趣。这些测试是通过SWIG编译的测试模块代码。

我试过运行:

coverage run --source=/path/to/module/__init__py allMyTests.py

coverage run --source=/path/to/module/__init__py partOfTests.py

在每种情况下,它都保存了相同的信息,即使他们从模块中使用的测试数量和代码量有很大不同。它似乎没有像我预期的那样起作用,但也许我做错了什么。

我能知道python绑定代码的测试覆盖率是多少吗?

它不必使用coverage.py工具。

覆盖率用于确定要测试的代码的比例。因此,如果两个测试文件在测试API的相同部分,那么它们在代码量和测试数量上完全不同,仍然可能导致相同的覆盖率数据。

更新:

听起来您想要测试python扩展DLL中C/C++代码的覆盖率。由于扩展是C/C++,覆盖率模块不能进入其中。模块可以告诉你的是,扩展中的每个Python函数是否都是从测试中的某个地方调用的。

也就是说,任何C/C++代码覆盖工具,只要能按需处理动态链接的DLL加载,都能满足您的需求。最终,您的脚本由python.exe运行,它最终加载您的DLL。如果DLL是在Visual C++2010中编写的,并且您可以找到一个与该编译器配合使用的C/C++代码覆盖工具,那么您可以告诉Visual Studio附加到python进程,并为感兴趣的DLL提供覆盖统计信息(我从未这样做过,但我认为有一种方法可以告诉覆盖工具exe的哪些部分感兴趣(在本例中是您的DLL)。

因此,我想为您的C++编译器找到一个合适的C/C++代码覆盖工具。像在windows上一样,Visual Studio 2010中对本机C++exe/dll的SO post代码覆盖表明存在这样的工具。

最新更新