我想知道是否有办法在不知道密码的情况下登录测试客户端。有点像:
class Test(TestCase):
def test_login_without_password(self):
self.client.login(user_obj=User.objects.get(pk=1))
答案 0 :(得分:0)
我找不到一个没有密码登录用户的简洁方法:建议重载测试客户端的唯一方法。在一天结束时,我写了一个装饰器,它创建一个管理员用户并将用户登录。
from functools import wraps
from django.contrib.auth.models import User
from faker import Faker
def create_admin_user_and_login(func):
@wraps(func)
def wrapper(self):
faker = Faker()
username = faker.pronounceable_unique_id(length=30)
password = faker.password()
user = User.objects.create_user(
username=username,
first_name=faker.word().title(),
last_name=faker.word().title(),
email=faker.email(),
password=password)
user.is_staff = True
user.is_superuser = True
user.save()
self.client.login(username=username, password=password)
return func(self)
return wrapper
faker.faker.Faker
是一个生成一些虚假数据的类。
答案 1 :(得分:0)
我认为用户必须在登录前进行身份验证。
我不知道User.objects.get()== authenticate(用户名,密码),我认为它们不是。