如果django模板具有在生产中无声失败的呈现错误,如何使测试用例失败

时间:2016-10-19 09:30:24

标签: python django templates testing

我知道django测试用例是用DEBUG = False和TEMPLATE_DEBUG = False完成的,并且我可以使用

将其更改为True以用于特定功能
from django.test.utils import override_settings

@override_settings(DEBUG=True)
def test_one_function(self):
    # This test should be failing and is not.
    # If I did not test manually I would'nt know !
    pass

但也许有更好的,更通用的解决方案可以同时申请eveything?

我的模板中有错误:我包含了另一个模板,链接已损坏。如果我用DEBUG = True手动检查我得到TemplateDoesNotExist错误。但是在我的测试用例中,url是在没有破坏包含的情况下呈现的,它不会抛出错误,http_status是200.我已经在其他地方测试了非常通用的包含模板,所以我不想添加测试来查看是否什么是内部正确呈现。但我希望看到渲染失败,这就是我的测试!

我尝试将TEMPLATE_STRING_IF_INVALID设置为异常(找到here),但它似乎不适用于损坏的包含。

有没有办法在测试期间使所有渲染错误引发异常而不破坏django在调试中不运行测试的设计原则?

2 个答案:

答案 0 :(得分:2)

您可以使用--debug-mode为所有测试设置DEBUG = True。示例:

$ ./manage.py test --debug-mode

另一种解决方案是等待Django 2.1(尚未发布)。丢失包含内容的文档承诺不会被忽略(请参阅include tag参考资料的结尾)。

答案 1 :(得分:0)

Your question is solved here

模板丢失和对象丢失之间存在差异,当上下文中缺少对象时,将调用TEMPLATE_STRING_IF_INVALID