【问题标题】:Django assertTemplateUsed fails after redirect重定向后 Django assertTemplateUsed 失败
【发布时间】:2018-11-16 22:00:04
【问题描述】:

我正在做一个 Django 2.1 实践项目。我的测试的最后一行一直失败。
如果发生重定向,assertTemplateUsed 检查是否有效?

回溯(最近一次通话最后一次):
文件“test_views.py”,第 24 行,在 test_home_page_not_login_redirect self.assertTemplateUsed(resp, '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/'

【问题讨论】:

    标签: python django django-unittest


    【解决方案1】:

    由于reploy 是302 FOUND 重定向,因此没有用于HTTP 响应的模板!

    如果您想真正遵循重定向链,您可以将follow=True 参数传递给self.client.get (https://docs.djangoproject.com/en/2.1/topics/testing/tools/#django.test.Client.get)。这样您就可以实际检查使用哪个模板来呈现(重定向的)响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-15
      • 2021-12-16
      • 1970-01-01
      • 2013-08-06
      • 2013-11-15
      • 2014-08-22
      • 2011-08-15
      • 2013-11-05
      相关资源
      最近更新 更多