首页 > 解决方案 > Python Coverage 说 A 行被覆盖,需要知道从哪里

问题描述

我有一份可能是谎言或歪曲的报道。它说我覆盖了我的 Django 模型代码中的一行。我看不到那条线在哪里行使。我可以看到模块被导入,类被导入,但没有被调用/实例化。

因此,覆盖率报告说我覆盖了 A 线。大概这意味着 B 线,某处,正在行使它。我想知道B线在哪里。 有没有办法在我的测试中找到调用 Line A 的一组 Line-B(一个或多个)?

似乎这可能以某种方式/某处成为覆盖率报告中的注释。这绝对是可知的,因为覆盖必须跟踪正在使用的东西。

我没有看到它。

如果这没有实现,我想建议它。我知道,作为每行执行的完整堆栈跟踪,它可能太复杂了。但是,也许只是检查立即调用框架将是一个好的开始,并且很有帮助。

标签: pythonunit-testingpytestcode-coverageagile

解决方案


这是一种有趣的方式来发现涵盖该行的内容:

在该行中插入一个错误。

如果您随后运行测试,真正覆盖该线路的测试将失败。堆栈跟踪应包括 B 行。


推荐阅读