Метод get
Метод get класса Client предназначен для выполнения
GET-запросов к вашему Django-приложению в тестовой среде.
Он возвращает объект ответа, содержащий информацию о статусе,
содержимом и заголовках ответа. Метод принимает путь URL
и дополнительные необязательные параметры для настройки запроса.
Синтаксис
client.get(path, data=None, follow=False, secure=False, **extra)
Параметры метода get:
-
path- обязательный строковый параметр, указывающий относительный URL-адрес, к которому выполняется запрос -
data- необязательный словарь, содержащий GET-параметры, которые будут добавлены к URL-адресу -
follow- логический параметр, указывающий, следует ли автоматически обрабатывать перенаправления. По умолчаниюFalse -
secure- логический параметр, указывающий, следует ли использовать HTTPS-протокол. По умолчаниюFalse -
**extra- дополнительные параметры, такие как заголовки, данные пользователя для аутентификации и т.д.
Пример
Базовый пример выполнения GET-запроса к главной странице:
from django.test import TestCase
from django.test import Client
class MainPageTest(TestCase):
def test_home_page(self):
client = Client()
response = client.get('/')
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'Welcome to our site')
Результат выполнения кода:
"Test passed successfully"
Пример
Выполнение GET-запроса с параметрами для поиска статей:
from django.test import TestCase
from django.test import Client
class SearchTest(TestCase):
def test_search_articles(self):
client = Client()
response = client.get('/search/', {'query': 'django', 'page': 1})
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'Django tutorial')
Результат выполнения кода:
"Test passed successfully"
Пример
Использование параметра follow для обработки перенаправлений:
from django.test import TestCase
from django.test import Client
class RedirectTest(TestCase):
def test_redirect_follow(self):
client = Client()
response = client.get('/old-url/', follow=True)
self.assertEqual(response.status_code, 200)
self.assertEqual(len(response.redirect_chain), 1)
self.assertEqual(response.redirect_chain[0][0], '/new-url/')
Результат выполнения кода:
"Test passed successfully"
Пример
Выполнение GET-запроса с дополнительными заголовками:
from django.test import TestCase
from django.test import Client
class HeaderTest(TestCase):
def test_request_with_headers(self):
client = Client()
response = client.get(
'/api/users/',
HTTP_ACCEPT='application/json',
HTTP_AUTHORIZATION='Bearer token123'
)
self.assertEqual(response.status_code, 200)
self.assertEqual(response['Content-Type'], 'application/json')
Результат выполнения кода:
"Test passed successfully"
Пример
Использование get с аутентифицированным пользователем:
from django.test import TestCase
from django.test import Client
from django.contrib.auth.models import User
class AuthenticatedTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(
username='testuser',
password='testpass123'
)
def test_authenticated_get(self):
client = Client()
client.login(username='testuser', password='testpass123')
response = client.get('/profile/')
self.assertEqual(response.status_code, 200)
self.assertContains(response, 'Welcome testuser')
Результат выполнения кода:
"Test passed successfully"
Смотрите также
-
метод
post,
который выполняет POST-запросы в тестах -
метод
login,
который выполняет вход пользователя в тестовом клиенте -
метод
force_login,
который выполняет принудительный вход пользователя -
класс
client,
который представляет встроенный тестовый клиент