Skip to main content
 首页 » 编程设计

python之未知的密码哈希算法。 PASSWORD_HASHERS 设置之使用工厂男孩

2025年05月04日852php

如果我创建示例用户帐户进行测试,我会遇到此错误:

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

class ExampleTest(TestCase): 
    def test_sample_data(self): 
        for i in range(0,1): 
            user = content.factories.UserFactory.create() 

工厂.py:

class UserFactory(factory.Factory): 
    FACTORY_FOR = User 
 
    username = factory.Sequence(lambda n: 'User' + n) 
    email = 'mail@gmail.com' 
    password = 'password1' 

如何解决?

请您参考如下方法:

更新。在documentation中有描述。 , 你应该使用 factory.PostGenerationMethodCall:

class UserFactory(factory.Factory): 
    class Meta: 
        model = User 
 
    username = 'user' 
    password = factory.PostGenerationMethodCall('set_password', 
                                                'defaultpassword') 

旧答案。 实际上,这在 factory-boy documentation 中有描述。 :

class UserFactory(factory.Factory): 
    @classmethod 
    def _prepare(cls, create, **kwargs): 
        password = kwargs.pop('password', None) 
        user = super(UserFactory, cls)._prepare(create, **kwargs) 
        if password: 
            user.set_password(password) 
            if create: 
                user.save() 
        return user 

最好使用这个解决方案,这样你就可以正确使用UserFactory.build()、UserFactory.create() 和UserFactory.attributes() (稍后将返回未经哈希处理的密码)