在Django中实现了自定义用户模型,并允许用户使用URL http://127.0.0.1:8000/users/signup/进行注册。对该URL的GET请求显示如下:
我已经为此页面编写了测试。 get
的测试按预期工作。
我为post
编写了测试,目的是该帖子将在测试数据库中创建一个用户。之后,我可以编写测试以确认是否创建了用户以及用户名是否匹配等等。但是似乎没有创建用户。以下是我的测试
class SignUpPageTests(TestCase):
def setUp(self) -> None:
self.username = 'testuser'
self.email = '[email protected]'
self.age = 20
self.password = 'password'
def test_signup_page_url(self):
response = self.client.get("/users/signup/")
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, template_name='signup.html')
def test_signup_page_view_name(self):
response = self.client.get(reverse('signup'))
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed(response, template_name='signup.html')
def test_signup_form(self):
response = self.client.post(reverse('signup'), data={
'username': self.username,
'email': self.email,
'age': self.age,
'password1': self.password,
'password2': self.password
})
self.assertEqual(response.status_code, 200)
users = get_user_model().objects.all()
self.assertEqual(users.count(), 1)
The users.count()结果为0,我的测试失败。我要去哪里错了?
我有同样的问题,并意识到问题是表单验证失败,您可以手动(运行服务器)确认如果您使用password
作为密码,那么Django会抱怨说This password is too common.
另外,在我的测试中,我希望代码是302而不是200,因为我在注册后会重定向。