Метод login
Метод login применяется к экземпляру класса Client
и выполняет аутентификацию пользователя в тестовой среде.
Он принимает учетные данные пользователя и возвращает
True при успешной аутентификации, либо False
в случае неудачи. Метод автоматически устанавливает
необходимые сессионные данные, что позволяет эмулировать
поведение залогиненного пользователя в последующих тестовых
запросах.
Синтаксис
client.login(username='username', password='password')
Параметры
Метод принимает именованные аргументы:
-
username- имя пользователя для аутентификации (строка) -
password- пароль пользователя (строка)
Метод возвращает булево значение: True при успешном
входе и False при неудаче.
Пример . 1 - Базовый вход пользователя
Создадим тест, в котором выполняется вход пользователя с предварительно созданными учетными данными:
from 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 - Проверка доступа после входа
Проверим, что аутентифицированный пользователь может доступиться к защищенной странице:
from 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 - Неудачная попытка входа
Проверим поведение системы при вводе неверных учетных данных:
from 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,
который используется для подготовки данных перед каждым тестом