我对功能测试的测试覆盖率很感兴趣。这些测试是通过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代码覆盖表明存在这样的工具。