Django 测试重定向的页面
Django test for a page that redirects
我正在尝试为重定向到 仪表板 的视图编写测试,但我没有得到正确的结果。在 he/she 可以访问 (membership) 视图之前,必须对用户进行身份验证。
在我的 urls.py 中,我有类似
的内容
...
path('membership/', MembershipView.as_view(), name='membership'),
...
那么我的tests.py包含
class TestApp(TestCase):
def test_that_membership_resolves(self):
client = Client()
response = client.post('/membership/', {
# I then pass the necessary values in a dictionary
...
...
})
self.assertRedirects(response, reverse("src:dashboard"))
但是我收到一条错误消息
self.assertEqual(
AssertionError: '/login/?next=%2Fmembership%2F' != '/dashboard'
- /login/?next=%2Fmembership%2F
+ /dashboard
: Response redirected to '/login/?next=/membership/', expected '/dashboard'Expected '/login/?next=/membership/' to equal '/dashboard'.
我认为它告诉我先登录。我已经有一个测试登录和测试通过的方法。我该如何解决这里的问题?
然后在实例化你的客户端后先登录。您的视图需要登录才能查看,所以您需要先登录?
client.login(email="testuser1@example.com", password="testpass123")
或者在您的测试设置中有效的任何用户登录
编辑:对所有测试使用设置,因此您对所有测试都有一些初始数据:
class TestViews(TestCase):
def setUp(self):
self.user = get_user_model().objects.create_user(email="testuser1@example.com",password="testpass123",)
def test_that_membership_resolves(self):
client = Client()
client.login(email="testuser1@example.com", password="testpass123")
response = client.post('/membership/', {
# I then pass the necessary values in a dictionary
...
...
})
self.assertRedirects(response, reverse("src:dashboard"))
def test_whatever_else_comes_next_to_test(self):
# use your setUp data again for another test
我正在尝试为重定向到 仪表板 的视图编写测试,但我没有得到正确的结果。在 he/she 可以访问 (membership) 视图之前,必须对用户进行身份验证。 在我的 urls.py 中,我有类似
的内容...
path('membership/', MembershipView.as_view(), name='membership'),
...
那么我的tests.py包含
class TestApp(TestCase):
def test_that_membership_resolves(self):
client = Client()
response = client.post('/membership/', {
# I then pass the necessary values in a dictionary
...
...
})
self.assertRedirects(response, reverse("src:dashboard"))
但是我收到一条错误消息
self.assertEqual(
AssertionError: '/login/?next=%2Fmembership%2F' != '/dashboard'
- /login/?next=%2Fmembership%2F
+ /dashboard
: Response redirected to '/login/?next=/membership/', expected '/dashboard'Expected '/login/?next=/membership/' to equal '/dashboard'.
我认为它告诉我先登录。我已经有一个测试登录和测试通过的方法。我该如何解决这里的问题?
然后在实例化你的客户端后先登录。您的视图需要登录才能查看,所以您需要先登录?
client.login(email="testuser1@example.com", password="testpass123")
或者在您的测试设置中有效的任何用户登录
编辑:对所有测试使用设置,因此您对所有测试都有一些初始数据:
class TestViews(TestCase):
def setUp(self):
self.user = get_user_model().objects.create_user(email="testuser1@example.com",password="testpass123",)
def test_that_membership_resolves(self):
client = Client()
client.login(email="testuser1@example.com", password="testpass123")
response = client.post('/membership/', {
# I then pass the necessary values in a dictionary
...
...
})
self.assertRedirects(response, reverse("src:dashboard"))
def test_whatever_else_comes_next_to_test(self):
# use your setUp data again for another test