python - 使用 PASSWORD_HASHERS 为 unittest 用户创建一个简单的密码

标签 python django django-testing

在 django 1.2.5 之前,我可以使用以下代码创建一个用户进行测试,然后登录:

class TestSomeLoginRequiredView(TestCase):
    urls = 'sonloop.tests.test_urls'

    def setUp(self):
        self.user = User.objects.create(username='testuser',password='some_password')


    def test_the_view(self):
        response = self.client.get('/test_view_url/')
        self.assertEqual(response.status_code,401)

        self.client.login(username='testuser',password='some_password')
        response = self.client.get('/test_view_url/')
        self.assertEqual(response.status_code,200)

现在在 django 1.4 中使用相同的代码不再有效:

ValueError: Unknown password hashing algorithm 'some_password'. Did you specify it in the PASSWORD_HASHERS setting?

我知道这与新的密码哈希系统有关。我没有使用 PASSWORD_HASHERS 设置,所以 Django 应该使用一些默认设置。

Django 文档现在很少关于如何实现类似的东西。在测试部分没有任何改变。从关于创建密码和如何散列它们的部分,我可以看到我可能会创建一个这样的密码:

self.user = User.objects.create(username='testuser')
self.user.set_password('some_password')

但这只会在第一行引发这种错误(在创建用户时,而不是在分配密码时):

ValueError: Unknown password hashing algorithm ''. Did you specify it in the PASSWORD_HASHERS setting?

这是 django 不接受空密码的一些问题,所以我将其更改为:

self.user = User.objects.create(username='testuser',password='!')
self.user.set_password('some_password')

然后尝试像那样登录用户:

login = self.client.login(username='testuser',password='some_password')
self.assertTrue(login)

现在引发了一个 AssertionError: False is not True 叹息 - 我几乎预料到......

我现在的问题是:如何创建一个带密码的用户,并使用 django 测试客户端登录该用户?

最佳答案

self.user = User.objects.create(username='testuser',password='!')
self.user.set_password('some_password')
self.user.save() # <--- You need this ;)

或:from here

self.user = User.objects.create_user(username='user', email='email@example.com', password='pass')

关于python - 使用 PASSWORD_HASHERS 为 unittest 用户创建一个简单的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10120518/

相关文章:

python - 通过管理员创建新用户时出现 NoReverseMatch 错误

python - 如何在 Django Rest Framework 中使用自定义 token 模型

python - 如何在 Django 模板中迭代字典的列表值

django - 在 Django 模型中测试 'class Meta'

django - 在 Django 中加载用于 Selenium 测试的装置时出现完整性错误

python - Matplotlib imshow 偏移量以匹配轴?

python - 如何手动设置cmap颜色?

python - 针对整个项目运行 PyCharm 的拼写检查

django - 如何在 Django 中测试关闭数据库连接的方法?

python - 如何从 OpenOffice Calc .ods 文件中读取单元格的值?