我的 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')),
]