Алгоритм хеширования неизвестного пароля. Настройка 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.

Другие вопросы по тегам