在 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 = 'testuser@email.com'
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)
users.count() 结果是 0,我的测试失败了。我哪里错了?
最佳答案
我遇到了同样的问题并意识到问题是表单验证失败,您可以手动确认(运行服务器),如果您使用 password
作为你的密码,Django 提示说 This password is too common.
因此,您需要使用不同的密码。
另外,在我的测试中,我期望代码为 302 而不是 200,因为我在注册后重定向。
关于python - 编写用于检查新用户创建的 Django 注册表单测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57337720/