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

Pie*_*las 6 python testing django templates

我知道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
Run Code Online (Sandbox Code Playgroud)

但也许有一种更好,更通用的解决方案可以同时应用于eveything?

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

我试图将TEMPLATE_STRING_IF_INVALID设置为异常(在此处找到),但它似乎不适用于破坏的包含.

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

小智 2

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

$ ./manage.py test --debug-mode
Run Code Online (Sandbox Code Playgroud)

另一种解决方案是等待 Django 2.1(尚未发布)。文档承诺丢失的包含不会被静音(请参阅包含标签参考的末尾 )。