Django模板测试覆盖率

24
有没有办法生成一个报告,其中包含我django测试套件中代码覆盖率的模板?我的python已经有了覆盖率,但是对于模板的覆盖率来识别死亡或未经测试的模板代码将非常棒。
澄清一下:我想找到在我的测试套件期间从未执行或发出的模板行。

django-debug-toolbar 捕获模板信息,也许会给你带来灵感。 - jpic
3个回答

12

1

模板不像Python源代码一样存储任何行号信息。你能做的最好的办法是猴子补丁(NodeList对象)来记录每个节点被评估的次数,然后在特殊模式下重新渲染模板以显示哪些节点已被评估。

编辑:我已经被纠正了。

模板确实存储行号信息,但仅适用于标记的开头。例如,如果您有一个TextNode跨越多行,则需要自己处理。django.templates.debug中有一些有趣的代码,可能对构建这样的覆盖率报告器有用。


0

我认为你无法从模板中获取覆盖信息,但是你可以通过连接template_rendered signal来找出哪些模板被渲染。你的接收器将存储已渲染模板的名称。

然后,你可以使用find命令轻松找出未被渲染的模板。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接