Метод get

Метод get класса Client предназначен для выполнения GET-запросов к вашему Django-приложению в тестовой среде. Он возвращает объект ответа, содержащий информацию о статусе, содержимом и заголовках ответа. Метод принимает путь URL и дополнительные необязательные параметры для настройки запроса.

Синтаксис

pythonclient.get(path, data=None, follow=False, secure=False, **extra)

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

Пример

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

pythonfrom 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')

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

python"Test passed successfully"

Пример

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

pythonfrom 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')

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

python"Test passed successfully"

Пример

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

pythonfrom 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/')

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

python"Test passed successfully"

Пример

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

pythonfrom 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')

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

python"Test passed successfully"

Пример

Использование get с аутентифицированным пользователем:

pythonfrom 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')

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

python"Test passed successfully"

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

  • метод post,
    который выполняет POST-запросы в тестах
  • метод login,
    который выполняет вход пользователя в тестовом клиенте
  • метод force_login,
    который выполняет принудительный вход пользователя
  • класс client,
    который представляет встроенный тестовый клиент