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

Метод get класса RequestFactory

Метод get класса RequestFactory предназначен для создания объектов HttpRequest с методом GET. Он применяется в тестах для имитации GET-запросов к представлениям без запуска полноценного сервера. Метод принимает путь к представлению и дополнительные параметры: данные запроса (QUERY_STRING), заголовки, данные сессии и другие настройки.

Синтаксис

from django.test import RequestFactory factory = RequestFactory() request = factory.get(path, data=None, **extra)

Параметры метода:

  • path - URL-путь к представлению (обязательный параметр)
  • data - словарь параметров GET-запроса (необязательный)
  • extra - дополнительные параметры (заголовки, формат данных, etc.)

Пример

Создадим простой GET-запрос без параметров:

from django.test import RequestFactory from myapp.views import article_list factory = RequestFactory() request = factory.get('/articles/') response = article_list(request) print(response.status_code)

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

"200"

Пример

Создадим GET-запрос с параметрами в QUERY_STRING:

from django.test import RequestFactory from myapp.views import article_list factory = RequestFactory() request = factory.get('/articles/', {'category': 'tech', 'page': 2}) response = article_list(request) print(request.GET.get('category')) print(request.GET.get('page'))

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

"tech" "2"

Пример

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

from django.test import RequestFactory from myapp.views import article_detail factory = RequestFactory() request = factory.get( '/articles/1/', HTTP_USER_AGENT='Mozilla/5.0', HTTP_ACCEPT='application/json' ) response = article_detail(request, pk=1) print(request.headers.get('User-Agent')) print(request.headers.get('Accept'))

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

"Mozilla/5.0" "application/json"

Пример

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

from django.test import RequestFactory, TestCase from django.contrib.auth.models import User from myapp.views import profile_view class ProfileViewTest(TestCase): def setUp(self): self.factory = RequestFactory() self.user = User.objects.create_user( username='testuser', password='testpass' ) def test_profile_view_with_authenticated_user(self): request = self.factory.get('/profile/') request.user = self.user response = profile_view(request) self.assertEqual(response.status_code, 200)

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

"Тест пройден успешно"

Пример

Создадим GET-запрос с данными в формате JSON:

from django.test import RequestFactory from myapp.views import api_articles import json factory = RequestFactory() request = factory.get( '/api/articles/', {'format': 'json'}, content_type='application/json' ) response = api_articles(request) data = json.loads(response.content) print(data.get('count'))

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

"10"

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

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