РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
786 of 818 menu

Метод force_login

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

Синтаксис

client.force_login(user, backend=None)

Пример

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

from django.test import TestCase, Client from django.contrib.auth.models import User from django.urls import reverse class ProfileViewTest(TestCase): def setUp(self): self.client = Client() self.user = User.objects.create_user( username="testuser", password="testpassword" ) def test_profile_page_with_force_login(self): self.client.force_login(self.user) response = self.client.get(reverse("profile")) self.assertEqual(response.status_code, 200) self.assertContains(response, "Welcome, testuser")

Результат выполнения кода:

"Test passed successfully"

Пример

Давайте принудительно аутентифицируем суперпользователя и проверим доступ к админке:

from django.test import TestCase, Client from django.contrib.auth.models import User from django.urls import reverse class AdminViewTest(TestCase): def setUp(self): self.client = Client() self.admin_user = User.objects.create_superuser( username="admin", email="admin@example.com", password="adminpassword" ) def test_admin_access_with_force_login(self): self.client.force_login(self.admin_user) response = self.client.get(reverse("admin:index")) self.assertEqual(response.status_code, 200) self.assertContains(response, "Django administration")

Результат выполнения кода:

"Test passed successfully"

Пример

Давайте сравним force_login и login методы на примере:

from django.test import TestCase, Client from django.contrib.auth.models import User from django.urls import reverse class LoginComparisonTest(TestCase): def setUp(self): self.client = Client() self.user = User.objects.create_user( username="testuser", password="testpassword" ) def test_force_login_vs_login(self): # force_login - прямой доступ без проверки пароля self.client.force_login(self.user) response1 = self.client.get(reverse("dashboard")) self.assertEqual(response1.status_code, 200) # login - требует правильного пароля self.client.logout() success = self.client.login( username="testuser", password="testpassword" ) self.assertTrue(success) response2 = self.client.get(reverse("dashboard")) self.assertEqual(response2.status_code, 200)

Результат выполнения кода:

"Both login methods worked successfully"

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

  • метод login,
    который выполняет реальный вход пользователя через форму аутентификации
  • метод logout,
    который выполняет выход текущего пользователя из системы
  • класс TestCase,
    который предоставляет тестовую среду с клиентом и фикстурами
  • атрибут session,
    который предоставляет доступ к сессии тестового клиента
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить