未知的密码哈希算法。PASSWORD_HASHERS 设置 - 使用 factory boy
如果我创建一个测试用的用户账户,就会出现这个错误:
未知的密码加密算法 'password1'。你在 PASSWORD_HASHERS 设置中指定了吗?
class ExampleTest(TestCase):
def test_sample_data(self):
for i in range(0,1):
user = content.factories.UserFactory.create()
factories.py:
class UserFactory(factory.Factory):
FACTORY_FOR = User
username = factory.Sequence(lambda n: 'User' + n)
email = 'mail@gmail.com'
password = 'password1'
怎么解决这个问题呢?
3 个回答
0
user = content.factories.UserFactory.create()
user.set_password('yourpassword')
user.save()
这个回答是对问题的一个编辑,问题是未知的密码哈希算法。PASSWORD_HASHERS 设置 - 使用 factory boy,提问者是edekmax,根据 CC BY-SA 3.0 许可协议发布。
0
class UserFactory(factory.Factory):
FACTORY_FOR = User
username = 'user'
password = factory.PostGenerationMethodCall('set_password',
'defaultpassword')
可以在这里查看文档 https://factoryboy.readthedocs.org/en/v1.3.0/reference.html#postgenerationmethodcall
2
更新。 在文档中有说明,你应该使用factory.PostGenerationMethodCall
:
class UserFactory(factory.Factory):
class Meta:
model = User
username = 'user'
password = factory.PostGenerationMethodCall('set_password',
'defaultpassword')
旧答案。实际上,这在factory-boy 文档中有描述:
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()
(后者会返回未加密的密码)