正在编写用于检查新用户创建的Django注册表单测试

问题描述 投票:1回答:1

在Django中实现了自定义用户模型,并允许用户使用URL http://127.0.0.1:8000/users/signup/进行注册。对该URL的GET请求显示如下:

enter image description here

我已经为此页面编写了测试。 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,我的测试失败。我要去哪里错了?

python django django-forms django-unittest django-custom-user
1个回答
0
投票

我有同样的问题,并意识到问题是表单验证失败,您可以手动(运行服​​务器)确认如果您使用password作为密码,那么Django会抱怨说This password is too common.另外,在我的测试中,我希望代码是302而不是200,因为我在注册后会重定向。

© www.soinside.com 2019 - 2024. All rights reserved.