Тестовый клиент Django игнорирует включение терминов в шаблон Django

У меня проблема с клиентом тестов Django. Пусть для пути home у меня есть этот шаблон (home.html):

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

а в example.html у меня ошибка:

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

Я написал тест на доступность URL-адреса Django.

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), а в тестовом клиенте этого не происходит.

Это нормально? Я использую Джанго 2.0.2. Любая помощь будет оценена


person SirSaleh    schedule 19.01.2019    source источник
comment
В вашем settings.py установлен ли параметр debug в словаре OPTIONS параметра TEMPLATES? А также каково значение общей настройки DEBUG в settings.py?   -  person Will Keeling    schedule 22.01.2019
comment
Может быть связано с этим: stackoverflow.com/questions/43758492/ Исключения отключаются в тегах include, когда DEBUG имеет значение False.   -  person Will Keeling    schedule 23.01.2019
comment
@WillKeeling Вы правы! в шаблоне OPTIONS словарь debug не был установлен в true. Я изменился, и теперь он работает. Спасибо.   -  person SirSaleh    schedule 23.01.2019
comment
@WillKeeling Будем признательны, если вы добавите свой ответ. Так что я могу принять и проголосовать. Спасибо.   -  person SirSaleh    schedule 23.01.2019
comment
добавлен ответ - спасибо!   -  person Will Keeling    schedule 23.01.2019


Ответы (1)


Я подозреваю, что здесь происходит то, что для параметра debug установлено значение False в разделе OPTIONS в параметре TEMPLATES, или вы его полностью пропустили (в этом случае он принимает значение общего параметра DEBUG).

Явная установка debug на True должна показать ошибку, и ваш тест должен завершиться неудачно, как и ожидалось.

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

Дополнительную информацию о настройке debug можно найти в разделе шаблонов документации Django здесь.

person Will Keeling    schedule 22.01.2019