我写过a python module,其中大部分都包含在@numba.jit
装饰器中以提高速度。我还为这个模块写了很多测试,我用py.test
运行(on Travis-CI)。现在,我正在尝试使用pytest-cov
查看这些测试的覆盖范围,这只是一个依赖于coverage
的插件(希望将所有这些集成coveralls)
不幸的是,似乎在所有这些函数上使用numba.jit
会使coverage
认为函数从未使用过 - 这种情况就是这种情况。所以我的测试基本上没有报道覆盖率。这并不是一个巨大的惊喜,因为numba
正在接受该代码并对其进行编译,因此代码本身实际上从未使用过。但是我希望有些时候你会看到python的一些魔力......
有没有什么有用的方法来结合这两个优秀的工具?如果不这样做,是否还有其他工具可以用来衡量numba的覆盖率?
[我做了一个最小的工作示例,显示了差异here。)
答案 0 :(得分:4)
最好的办法可能是在覆盖测量期间禁用numba JIT。这依赖于您信任Python代码和JIT代码之间的对应关系,但无论如何您需要在某种程度上信任它。
答案 1 :(得分:1)
这不是回答这个问题,但我认为我应该宣传某人可能有兴趣继续工作的另一种方式。可能使用llvm-cov
可以完成一些非常漂亮的事情。据推测,这必须在numba中实现,并且必须对llvm代码进行检测,这将需要某处标记。但是由于numba知道python代码行和llvm代码之间的对应关系,所以必须有一些东西可以由比我更聪明的人实现。