python - coverage.py 是否正确显示 python 绑定(bind)的测试覆盖率?

标签 python testing binding code-coverage swig

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

我尝试过运行:

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

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

在每种情况下,即使测试数量和模块使用的代码量截然不同,它都会保存相同的信息。 它似乎没有按我的预期工作,但也许我做错了什么。

我能查出 python 绑定(bind)代码的测试覆盖率是多少吗?

不一定要使用coverage.py工具。

最佳答案

覆盖率用于确定正在测试的代码比例。因此,如果两个代码量和测试次数完全不同的测试文件正在测试 API 的相同部分,则它们仍然可能会产生相同的覆盖率数据。

更新:

听起来您想测试 python 扩展 DLL 中 C/C++ 代码的覆盖率。由于扩展是C/C++,所以覆盖模块无法进入其中。该模块可以告诉您扩展中的每个 Python 函数是否从测试中的某个位置调用。

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

因此,我会深入研究为您的 C++ 编译器寻找合适的 C/C++ 代码覆盖工具。就像在 Windows 上这个 SO 帖子 Code coverage in Visual Studio 2010 for native C++ exe/dll说明有这样的工具。

关于python - coverage.py 是否正确显示 python 绑定(bind)的测试覆盖率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121925/

相关文章:

XAML : Binding textbox maxlength to Class constant

python - keras 的特征重要性

python - if 语句和多个条件出错

javascript - 随机淡入淡出

java - 有没有办法为需要很长时间的东西编写 Selenium 脚本?

Silverlight MVVM 绑定(bind)似乎不起作用

python - logging.fileConfig() 在谷歌应用引擎上表现得很奇怪

python - 如何更改使用 Matplotlib 绘制的图形的大小?

unit-testing - 扩展另一个类的phpunit测试类

ios - 在 Xamarin 中跟踪 "unrecognized selector sent to instance"异常