gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:53:31 24 4
gpt4 key购买 nike

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com