Sobes.tech
Назад к вопросам
Junior — Middle
58

Проводил ли ты интеграционные тесты для API в Django?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Да, интеграционные тесты для API в Django — это нормальная практика. Обычно проверяют не только сам view, но и связку URL → сериализация → валидация → доступ к базе → ответ API. Важно показать, что тесты запускались через тестовый клиент и покрывали реальные сценарии, включая ошибки и права доступа.

Определение:

Интеграционные тесты для API в Django проверяют работу нескольких компонентов вместе, а не один изолированный метод. Обычно это тестирование endpoint’ов через Django test client или DRF APIClient, чтобы убедиться, что запрос проходит весь путь: роутинг, обработку данных, бизнес-логику и формирование ответа.

Пример использования:

Например, для endpoint создания пользователя можно проверить, что при валидном POST-запросе объект создаётся в базе, а при неверных данных API возвращает ошибку валидации.

from django.urls import reverse
from rest_framework.test import APITestCase

class UserCreateAPITest(APITestCase):
    def test_create_user(self):
        url = reverse("user-create")
        data = {
            "email": "test@example.com",
            "password": "StrongPass123"
        }

        response = self.client.post(url, data, format="json")

        self.assertEqual(response.status_code, 201)
        self.assertTrue(
            User.objects.filter(email="test@example.com").exists()
        )

Пояснение кода:

В этом примере тест поднимает тестовую среду Django и отправляет POST-запрос на endpoint создания пользователя. Затем проверяется код ответа 201, а также факт, что запись действительно появилась в базе. Такой тест полезен тем, что одновременно проверяет и HTTP-слой, и работу с данными.

Ключевые моменты:

  • Интеграционные тесты проверяют не один метод, а связку компонентов API.
  • Для Django обычно используют TestCase, APITestCase или тестовый клиент DRF.
  • Хорошо покрывать успешные сценарии, ошибки валидации и доступ по правам.
  • Важно проверять не только статус-код, но и изменение состояния в базе.
  • Такие тесты медленнее unit-тестов, но ближе к реальному поведению системы.
  • На собеседовании полезно упомянуть реальные endpoint’ы, которые тестировались, и какие баги удалось поймать.