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

Атрибут client

Атрибут client доступен в каждом тестовом классе, наследующем от TestCase. Он представляет собой экземпляр тестового клиента Django, который позволяет отправлять GET, POST, PUT, DELETE и другие запросы к вашему приложению, проверять полученные ответы и состояние сессии. Клиент автоматически создаётся для каждого тестового метода и не требует явной инициализации.

Синтаксис

class MyTestCase(TestCase): def test_example(self): response = self.client.get('/some-url/') # или response = self.client.post('/submit/', data={'key': 'value'})

Пример . GET-запрос

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

from django.test import TestCase class HomePageTest(TestCase): def test_home_page_status_code(self): response = self.client.get('/') self.assertEqual(response.status_code, 200)

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

"Test passed successfully"

Пример . POST-запрос

Отправим данные формы через POST и проверим, что после отправки происходит перенаправление:

from django.test import TestCase class ContactFormTest(TestCase): def test_form_submission(self): response = self.client.post('/contact/', data={ 'name': 'John', 'email': 'john@example.com', 'message': 'Hello!' }) self.assertEqual(response.status_code, 302)

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

"Test passed successfully"

Пример . Работа с сессией

Через атрибут client можно обращаться к сессии и проверять её содержимое:

from django.test import TestCase class SessionTest(TestCase): def test_session_value(self): session = self.client.session session['user_id'] = 123 session.save() response = self.client.get('/profile/') self.assertEqual(response.context['user_id'], 123)

Пример . Авторизация через клиент

Атрибут client позволяет легко авторизовать пользователя с помощью метода force_login:

from django.test import TestCase from django.contrib.auth.models import User class AuthTest(TestCase): def test_authenticated_user(self): user = User.objects.create_user(username='testuser', password='12345') self.client.force_login(user) response = self.client.get('/dashboard/') self.assertContains(response, 'Welcome, testuser')

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

"Test passed successfully"

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

  • класс Client,
    который используется для отправки HTTP-запросов в тестах
  • метод get,
    который выполняет GET-запрос через клиент
  • метод post,
    который выполняет POST-запрос через клиент
  • метод force_login,
    который принудительно авторизует пользователя
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить