Тестирование Django - authenticate () возвращает None - PullRequest
0 голосов
/ 10 октября 2019

Работа над проведением некоторых юнит-тестов с Django и попытка провести некоторое тестирование с помощью процесса входа в систему с помощью формы входа.

Я использую модифицированную модель User только для того, чтобы сделать поле электронной почты уникальным;в остальном ничто радикально не отличается.

account / views.py

def post(self, request):
    # Retrieve the username and password
    username = request.POST['username']
    password = request.POST['password']

    # Create a user object from authentication, or return None
    user = authenticate(username=username, password=password)

    # Check if user was created
    if user is not None:
        # Rest of the code, irrelevant...

account / test_views.py

from account.models import User as CustomUser    

# Code snippit

def test_account_login_POST_successful_login(self):
    # Create a user to test login
    CustomUser.objects.create_user(
        username='test_user',
        email='test_user@intranet.com',
        password='flibble'
    )

    response = self.client.post(self.login_url, {
        'username': 'test_user',
        'password': 'flibble'
    })

    self.assertEqual(response.status_code, 301)

account / models.py

class User(AbstractUser):
    # Make the email field unique
    email = models.EmailField(unique=True)

project / settings.py

# Authentication
AUTH_USER_MODEL = 'account.User'

Забавно, что вход в систему нормально работает в веб-приложении, но при тестировании всегда возвращает None.

Я пыталсяcheck_password() с созданным пользователем, и он возвращает true как в методе test, так и в методе view.

Я также пытался вставить AUTHENTICATION_BACKEND = ['django.contrib.auth.backends.ModelBackend'], но не пошел.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...