如何确定哪个单元测试涵盖了函数或方法
How To Determine Which Unit Test Covered a Function or Method
从 Python 的角度来看,如何确定覆盖函数或方法的单元测试,或者通常由测试运行器在套件中的测试命中的任何代码行?考虑到覆盖工具知道被命中的特定代码,这些信息应该在手边似乎是合理的,但我找不到任何方法来获取这些信息(我使用 py.test
作为我的测试运行器, coverage
和 pytest-cov
模块)。
我发现的一种方法是只在代码中调用 pdb.set_trace
,但如果我能找到一种不需要修改被测代码的更优雅的方法,那将非常有帮助。
Coverage.py 尚未提供此功能,但有一张公开票,我们正在讨论想法:https://github.com/nedbat/coveragepy/issues/170
要阅读此问题的旧历史记录,请查看 the old ticket(在 BitBucket 跟踪器中)
我不知道这段代码在当前的生态系统中是否仍然有效(特别是当前的覆盖版本和 nose / nose 2 插件 API),但是 figleaf
包中的 figleaf-sections 插件提供此功能。
http://darcs.idyll.org/~t/projects/figleaf/doc/
如果我记得的话,那是一个很好的概念证明,我确信它很有用,但我认为有一些粗糙的边缘,如果有人接受这个想法并真正让它顺利进行,我会很高兴!
Smother 是围绕 coverage.py 的包装器实用程序,它分别测量测试套件中每个测试的代码覆盖率。它的主要特点包括:
- 使用 coverage.py 进行快速可靠的覆盖跟踪。
- 能够查找哪些测试访问了应用程序代码的任意部分。
- 能够将版本控制差异转换为受影响测试的子集以重新运行。
它支持 py.test 和鼻子。
从 Python 的角度来看,如何确定覆盖函数或方法的单元测试,或者通常由测试运行器在套件中的测试命中的任何代码行?考虑到覆盖工具知道被命中的特定代码,这些信息应该在手边似乎是合理的,但我找不到任何方法来获取这些信息(我使用 py.test
作为我的测试运行器, coverage
和 pytest-cov
模块)。
我发现的一种方法是只在代码中调用 pdb.set_trace
,但如果我能找到一种不需要修改被测代码的更优雅的方法,那将非常有帮助。
Coverage.py 尚未提供此功能,但有一张公开票,我们正在讨论想法:https://github.com/nedbat/coveragepy/issues/170
要阅读此问题的旧历史记录,请查看 the old ticket(在 BitBucket 跟踪器中)
我不知道这段代码在当前的生态系统中是否仍然有效(特别是当前的覆盖版本和 nose / nose 2 插件 API),但是 figleaf
包中的 figleaf-sections 插件提供此功能。
http://darcs.idyll.org/~t/projects/figleaf/doc/
如果我记得的话,那是一个很好的概念证明,我确信它很有用,但我认为有一些粗糙的边缘,如果有人接受这个想法并真正让它顺利进行,我会很高兴!
Smother 是围绕 coverage.py 的包装器实用程序,它分别测量测试套件中每个测试的代码覆盖率。它的主要特点包括:
- 使用 coverage.py 进行快速可靠的覆盖跟踪。
- 能够查找哪些测试访问了应用程序代码的任意部分。
- 能够将版本控制差异转换为受影响测试的子集以重新运行。
它支持 py.test 和鼻子。