Django assertTemplateUsed завершается ошибкой после перенаправления - PullRequest
0 голосов
/ 17 ноября 2018

Я работаю над тренировочным проектом Django 2.1.Последняя строка моего теста не проходит.Правда ли, что проверка assertTemplateUsed не будет работать, если произойдет перенаправление?

Traceback (последний вызов был последним):Файл "test_views.py", строка 24, в test_home_page_not_login_redirect self.assertTemplateUsed (соответственно 'users / home.html')Файл "testcases.py", строка 554, в assertTemplateUsed self.fail (msg_prefix + "Шаблоны не использовались для визуализации ответа")AssertionError: Нет шаблонов, используемых для визуализации ответа

test_views.py
def test_home_page_not_login_redirect(self):
    resp = self.client.get('/')
    self.assertEqual(resp.status_code, 302)
    self.assertRedirects(resp, '/accounts/login/?next=/')
    self.assertTemplateUsed(resp, 'users/login.html')

urls.py
url(r'^login/$',
    auth_views.LoginView.as_view(
        template_name='users/login.html',
        redirect_authenticated_user=True),
    name='users_login'),

settings.py
LOGOUT_REDIRECT_URL = '/accounts/login/'

1 Ответ

0 голосов
/ 17 ноября 2018

Поскольку реплой является перенаправлением 302 FOUND, для ответа HTTP не используется шаблон!

Если вы хотите фактически следовать цепочке перенаправления, вы можете передать параметр follow=True в self.client.get (https://docs.djangoproject.com/en/2.1/topics/testing/tools/#django.test.Client.get). Таким образом, вы сможете фактически проверить, какой шаблон использовался для рендеринга (перенаправлено ) ответ.

...