Алгоритм хеширования неизвестного пароля. Настройка PASSWORD_HASHERS - использование фабричного мальчика
Если я создаю образец учетной записи пользователя для теста, у меня есть эта ошибка:
Алгоритм хеширования неизвестного пароля "пароль1". Вы указали это в настройке 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'
Как это исправить?
РЕДАКТИРОВАТЬ:
Решение:
user = content.factories.UserFactory.create()
user.set_password('yourpassword')
user.save()
3 ответа
ОБНОВИТЬ. Это описано в документации, вы должны использовать factory.PostGenerationMethodCall
:
class UserFactory(factory.Factory):
class Meta:
model = User
username = 'user'
password = factory.PostGenerationMethodCall('set_password',
'defaultpassword')
СТАРЫЙ ОТВЕТ. На самом деле, это описано в заводской документации:
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()
(позже вернусь не зашифрованный пароль)
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
user = content.factories.UserFactory.create()
user.set_password('yourpassword')
user.save()
Этот ответ был опубликован как редактирование вопроса Неизвестный алгоритм хэширования пароля. Настройка PASSWORD_HASHERS - с использованием factory boy от OP user2108300 под CC BY-SA 3.0.