【问题标题】:Django test client ignores "include" terms in Django templateDjango 测试客户端忽略 Django 模板中的“包含”术语
【发布时间】:2019-06-13 13:05:01
【问题描述】:

我对 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 中的错误,即使我们预计会失败,测试也会通过,因为我将它包含在@987654331 中@ 并且在浏览器中我遇到了一个错误(状态代码 500),而这在测试客户端中没有发生。

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

【问题讨论】:

  • 在您的settings.py 中,您是否在OPTIONS 字典中的TEMPLATES 设置中设置了debug 选项?还有settings.py 中的整体DEBUG 设置的值是多少?
  • 可能与此相关:DEBUG 为 False 时,include 标签中的异常会被静音。
  • @WillKeeling 你说得对!在模板OPTIONS 字典中debug 未设置为true。我改变了它现在可以工作了。谢谢。
  • @WillKeeling 如果您添加答案,我们将不胜感激。所以我可以接受并投票。谢谢。
  • 已添加答案 - 谢谢!

标签: django testing django-testing


【解决方案1】:

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

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

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

有关debug 设置的更多信息可以在Django 文档here 的模板部分找到。

【讨论】:

    猜你喜欢
    • 2011-12-18
    • 2018-10-27
    • 2012-01-20
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 2023-03-07
    相关资源
    最近更新 更多