Django模板测试覆盖率

时间:2012-03-08 06:30:22

标签: python django unit-testing code-coverage

有没有办法在我的网站模板的django测试套件中生成包含代码覆盖率的报告?我已经有了python的报道,但是用于识别死的或未经测试的模板代码的模板的覆盖范围会非常棒。

澄清一下:我想在我的模板中找到在我的测试套件中从未执行或发出的行。

3 个答案:

答案 0 :(得分:11)

查看Django模板覆盖率工具:https://github.com/traff/dtcov 它完全符合您的需求。

编辑:Django模板覆盖范围作为插件合并到coverage.py: http://nedbatchelder.com/blog/201501/coveragepy_for_django_templates.html

建议使用它而不是原始项目。

答案 1 :(得分:1)

模板不存储任何类型的行号信息,如python源代码。您可以做的最好的事情是修补NodeList对象以记录每个节点的评估次数,然后以特殊模式重新渲染模板,以显示评估哪些节点。

编辑:我已经纠正了。

模板DO存储行号信息,但仅用于令牌的开头。 I.E.如果TextNode跨越多行,则需要自己处理。 django.templates.debug中有一些有趣的代码可能对构建这样的覆盖报告者很有用。

答案 2 :(得分:0)

我认为您无法从模板获取覆盖信息,但您可以通过连接template_rendered signal找出呈现的模板。您的接收器将存储渲染模板的名称。

然后,您可以轻松找到使用find命令呈现的模板。