Django 单元测试在登录时提供匿名用户

Aml*_*oti 5 python django unit-testing testcase

我有以下用于 Django 登录单元测试的代码。

"""This is the unit test case for form element"""
from django.test import TestCase
from django.contrib.auth.models import User


class TestForm(TestCase):
    def setUp(self):
        self.credentials = {
            'username': 'abhishek',
            'password': 'Abhishek@12345'}
        User.objects.create_user(**self.credentials)

    def test_login(self):
        # send login data
        response = self.client.post('/accounts/login', self.credentials, follow=True)
        # should be logged in now
        print(response.context['user'])
        self.assertTrue(response.context['user'].is_authenticated)
Run Code Online (Sandbox Code Playgroud)

当我通过我的命令 python ../manage.py test accounts.tests.test_form.TestForm 执行这个单元测试时,它给出了以下错误。

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
AnonymousUser
F
======================================================================
FAIL: test_login (accounts.tests.test_form.TestForm)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Django\webapplication\accounts\tests\test_form.py", line 18, in test_login
    self.assertTrue(response.context['user'].is_authenticated)
AssertionError: False is not true

----------------------------------------------------------------------
Ran 1 test in 3.391s

FAILED (failures=1)
Destroying test database for alias 'default'...
Run Code Online (Sandbox Code Playgroud)

这是我的登录views.py

from django.shortcuts import render, redirect, render_to_response
from django.contrib import auth
from accounts.forms import UserAttributeModelForm, UserModelForm

LOG = logging.getLogger(__name__)

def login(request):
    """This is the function to Login authenticated user"""
    LOG.debug("Inside Login function")
    message = ""
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = auth.authenticate(username=username, password=password)
        if user is not None:
            # correct username and password login the user
            auth.login(request, user)
            return redirect("/crudapplication/show")
        else:
            message = "Error wrong username/password"
    return render(request, 'registration/login.html', {'message': message})
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗!!!!

小智 -2

self.assertTrue(response.context['user'].is_authenticated)用。。。来代替self.assertTrue(response.context['user'].is_active)

希望这会对您有所帮助,否则您可以回复我,我将分享完整的登录测试用例。