Django 测试客户端忽略 Django 模板中的 "include" 个术语

Django test client ignores "include" terms in Django template

我对 Django 测试客户端有疑问。 对于 home 路径,我有这个模板 (home.html):

<html>
    <body>
       {% include 'example.html' %}
    </body>
</html>

并且在 example.html 我有错误:

<div>
   {% non_registered_tag arg1 arg2 %}
</div>

我编写了一个 Django 可访问性测试 URL。

class HomePageAccess(TestCase):
  def test_home_page(self):
    client = Client()
    response = client.get(reverse_lazy('home'))
    self.assertEqual(response.status_code, 200)

如果 home.html 中有错误,此代码会成功失败,但是如果 example.html 中有错误,包含在 home.html 中,测试将通过,即使我们期望失败,因为我将它包含在 home.html 中,并且在浏览器中遇到错误(状态代码 500),而这在测试客户端中没有发生。

正常吗?我正在使用 Django 2.0.2。 任何帮助将不胜感激

我怀疑这里发生的事情是您在 TEMPLATES 设置的 OPTIONS 部分中将 debug 选项设置为 False,或者您忽略了它完全(在这种情况下,它采用整体 DEBUG 设置的值)。

debug 显式设置为 True 应该会暴露错误,您的测试应该会按预期失败。

TEMPLATES = [
    {
        ...
        'OPTIONS': {
            'debug': True,
        },
    },
]

有关 debug 设置的更多信息,请参阅 Django 文档的模板部分 here