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

标签 python django django-forms django-unittest django-custom-user

在 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 = '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/

相关文章:

python - 使用Python通过javascript onclick下载文件?

python - 如何在eclipse中暂停python执行并返回交互式提示

python - multiprocessing.Queue : Broken pipe error

python - "pip freeze"给出了与 "help(' 模块不同的模块 ')"

python - Django 中自定义用户模型的 fields.E300 错误

python - 如何在 Django 中覆盖用户名 max_length ?

python - 使用 Anaconda install 在 Windows 上获取 CUDA 和 CUDNN 版本

django-extensions shell_plus 自动加载

django - 是否可以覆盖用户模型以使电子邮件字段成为必填字段?

python - 如何在应用程序引擎上制作多选表单字段