gpt4 book ai didi

django - 使用 Django factory_boy 进行测试中的用户身份验证

转载 作者:行者123 更新时间:2023-12-04 13:07:21 25 4
gpt4 key购买 nike

当尝试对我的代码的某些部分进行单元测试时,我需要一个用户登录。为了减少装置的数量,我使用 django_factory_boy 用户工厂,但生成的用户无法进行身份验证。

from django_factory_boy.auth import UserF
from django.contrib.auth import authenticate

user = UserF()
user.set_password('password')

然后 authenticate(username=user.username, password='password')返回 None而不是用户。关于这里缺少什么的任何想法?

最佳答案

@Andrew-Magee 解决方案有效,但这里的解决方案 describe in the doc :

import factory
from django.contrib.auth.models import User
#or
#from somewhere import CustomUser as User

class UserFactory(factory.DjangoModelFactory):
FACTORY_FOR = User

username = 'UserFactory'
email = 'test@example.com'
password = factory.PostGenerationMethodCall('set_password', 'password')

Django 控制台:

>>> from tests.factories import UserFactory
>>> from django.contrib.auth.models import check_password
>>> user = UserFactory()
>>> user.email
'test@example.com'
>>> check_password('password', user.password)
True

>>> user2 = UserFactory(username="SecondUserFactory", email='otheremail@example.com', password="ComplexPasswordMuchLonger!")
>>> user2.email
'otheremail@example.com'
>>> check_password('ComplexPasswordMuchLonger!', user2.password)
True

关于django - 使用 Django factory_boy 进行测试中的用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10183664/

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