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

Класс AsyncClient

Класс AsyncClient предназначен для асинхронного тестирования Django-приложений. Он имитирует браузерный запрос и позволяет выполнять GET, POST, PUT, PATCH, DELETE и другие HTTP-методы в асинхронном режиме. Основное отличие от синхронного Client заключается в том, что все методы AsyncClient являются асинхронными и требуют использования ключевого слова await при вызове. Этот класс удобно использовать при тестировании асинхронных представлений (ASGI-приложений) или при написании асинхронных тестов.

Синтаксис

from django.test import AsyncClient client = AsyncClient() response = await client.get('/path/')

Пример . Тестирование GET-запроса

Выполним GET-запрос к главной странице и проверим код ответа:

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

Пример . Тестирование POST-запроса

Отправим POST-запрос с данными формы и проверим результат:

from django.test import AsyncClient, TestCase class LoginTest(TestCase): async def test_user_login(self): client = AsyncClient() response = await client.post('/login/', { 'username': 'john', 'password': 'secret' }) self.assertEqual(response.status_code, 302)

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

"User successfully logged in"

Пример . Работа с заголовками

Добавим пользовательские заголовки в запрос:

from django.test import AsyncClient, TestCase class APITest(TestCase): async def test_api_with_headers(self): client = AsyncClient() response = await client.get( '/api/data/', headers={ 'X-Requested-With': 'XMLHttpRequest', 'Authorization': 'Bearer token123' } ) self.assertEqual(response.status_code, 200)

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

"Request processed successfully"

Пример . Использование в асинхронном тестовом классе

Используем AsyncClient в тестовом классе с асинхронным методом:

from django.test import AsyncClient, TransactionTestCase class AsyncViewTest(TransactionTestCase): async def test_async_response(self): client = AsyncClient() response = await client.get('/async/') self.assertEqual(response.status_code, 200) self.assertContains(response, "Hello, World!")

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

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