0

我的 Django 项目中有自定义的管理员登录页面。我正在尝试写unit-test,但它会引发错误。成功登录后,Django 将用户重定向到其他页面(仪表板页面)。在我的单元测试中不起作用assertRedirects。如何解决这个问题?

print reverse('administration:dashboard')返回我/administration/,但我有奇怪的错误。有人可以说我做错了什么吗?

测试.py:

class AdministrationViewTestCase(TestCase):
    def setUp(self):
        self.client = Client()

    def test_administration_login(self):
        response = self.client.get(
            reverse('administration:administration_login'),
            follow=True
        )
        self.assertEquals(response.status_code, 200)

        title = "Login"
        self.assertTrue(title in response.content)

        user = User.objects.create(
            username='user', password=make_password('password')
        )
        self.assertTrue(user)

        logged_in = self.client.login(username='user', password="password")
        self.assertTrue(logged_in)

        response = self.client.post(
            reverse('administration:administration_login')
        )
        self.assertEqual(response.status_code, 302)

        self.assertRedirects(
            response,
            expected_url=reverse('administration:dashboard'),
            status_code=302,
            target_status_code=200
        )

错误:

Traceback (most recent call last):
  File "/home/nurzhan/CA/administration/tests.py", line 41, in test_administration_login
    target_status_code=200
  File "/srv/envs/py27/lib/python2.7/site-packages/django/test/testcases.py", line 324, in assertRedirects
    % (path, redirect_response.status_code, target_status_code)
AssertionError: Couldn't retrieve redirection page '/accounts/profile/': response code was 404 (expected 200)

应用程序的 urls.py:

urlpatterns = [
    # Administration Dashboard
    url(r'^$',
        login_required(
            login_url=reverse_lazy('administration:administration_login'))
        (DashboardView.as_view()),
        name='dashboard'),

    # Administration Login
    url(r'^login/$',
        authentication_views.login,
        {
            'template_name': 'administration/login.html',
            'authentication_form': AdministrationAuthenticationForm,
            'extra_context': {
                'next': reverse_lazy('administration:dashboard')
            },
            'redirect_authenticated_user': True
        },
        name='administration_login'),
]

项目的urls.py:

urlpatterns = [
    # Administration Page
    url(r'^administration/',
        include('administration.urls', namespace='administration')),
]
4

0 回答 0