如何确定哪个单元测试覆盖了一个函数或方法

时间:2015-10-29 20:33:19

标签: python unit-testing code-coverage pytest

从Python的角度来看,如何确定涵盖函数或方法的单元测试,或者通常由测试运行器确定套件中的测试所遇到的任何代码行?考虑到覆盖工具知道被击中的特定代码,但是我找不到任何方法来获取这些信息(我使用py.test作为我的测试运行员{coverage,这些信息应该在手边,这似乎是合理的。 1}}和pytest-cov模块)。

我发现的一种方法是在代码中添加pdb.set_trace调用,但如果我能找到一种不需要修改测试代码的更优雅的方法,那将非常有用。

3 个答案:

答案 0 :(得分:3)

Coverage.py还没有提供此功能,但是我们正在开放一些机会,我们正在开展各种创意:https://github.com/nedbat/coveragepy/issues/170

要阅读此问题的旧历史记录,请查看the old ticket(在BitBucket跟踪器中)

答案 1 :(得分:3)

Smother是一个围绕coverage.py的包装器实用程序,它为测试套件中的每个测试单独测量代码覆盖率。其主要功能包括:

  • 使用coverage.py进行快速可靠的覆盖跟踪。
  • 能够查找哪些测试访问应用程序代码的任意部分。
  • 能够将版本控制差异转换为受影响的测试的子集以重新运行。

它支持py.test和nose。

答案 2 :(得分:1)

我不知道此代码在当前生态系统中是否仍然有效(特别是当前的覆盖版本和nose / nose 2插件API),但figleaf包中的figleaf-sections插件提供了此功能特征

http://darcs.idyll.org/~t/projects/figleaf/doc/

如果我记得,这是一个很好的概念证明,我确信它很有用,但我认为有一些粗糙的边缘,如果有人接受了这个想法并且真的让它顺利运作,我会很喜欢它! / p>