在django中按用户对象登录用户

时间:2013-12-21 23:50:20

标签: python django

我想知道是否有办法在不知道密码的情况下登录测试客户端。有点像:

class Test(TestCase):
    def test_login_without_password(self):
        self.client.login(user_obj=User.objects.get(pk=1))

2 个答案:

答案 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(用户名,密码),我认为它们不是。