Метод login

Метод login применяется к экземпляру класса Client и выполняет аутентификацию пользователя в тестовой среде. Он принимает учетные данные пользователя и возвращает True при успешной аутентификации, либо False в случае неудачи. Метод автоматически устанавливает необходимые сессионные данные, что позволяет эмулировать поведение залогиненного пользователя в последующих тестовых запросах.

Синтаксис

pythonclient.login(username='username', password='password')

Параметры

Метод принимает именованные аргументы:

Метод возвращает булево значение: True при успешном входе и False при неудаче.

Пример . 1 - Базовый вход пользователя

Создадим тест, в котором выполняется вход пользователя с предварительно созданными учетными данными:

pythonfrom django.test import TestCase
from django.contrib.auth.models import User

class LoginTest(TestCase):
  def setUp(self):
    User.objects.create_user(
      username='testuser',
      password='secretpassword'
    )
  
  def test_user_login(self):
    client = self.client
    login_success = client.login(
      username='testuser',
      password='secretpassword'
    )
    self.assertTrue(login_success)

Пример . 2 - Проверка доступа после входа

Проверим, что аутентифицированный пользователь может доступиться к защищенной странице:

pythonfrom django.test import TestCase
from django.contrib.auth.models import User
from django.urls import reverse

class ProtectedViewTest(TestCase):
  def setUp(self):
    User.objects.create_user(
      username='testuser',
      password='secretpassword'
    )
  
  def test_authenticated_access(self):
    client = self.client
    client.login(
      username='testuser',
      password='secretpassword'
    )
    response = client.get(reverse('profile'))
    self.assertEqual(response.status_code, 200)

Пример . 3 - Неудачная попытка входа

Проверим поведение системы при вводе неверных учетных данных:

pythonfrom django.test import TestCase
from django.contrib.auth.models import User

class FailedLoginTest(TestCase):
  def setUp(self):
    User.objects.create_user(
      username='testuser',
      password='secretpassword'
    )
  
  def test_failed_login(self):
    client = self.client
    login_success = client.login(
      username='testuser',
      password='wrongpassword'
    )
    self.assertFalse(login_success)

Смотрите также

  • метод logout,
    который выполняет выход пользователя из системы
  • метод force_login,
    который выполняет принудительный вход без проверки пароля
  • атрибут client,
    который предоставляет тестовый клиент в классе TestCase
  • метод setUp,
    который используется для подготовки данных перед каждым тестом