Проводили ли вы модульное тестирование API, реализованного с помощью Django?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Да, модульное тестирование API на Django проводилось. Для проверки использовались изолированные тесты контроллеров, сериализации и бизнес-логики, чтобы не зависеть от внешних сервисов и реальной БД там, где это не нужно. Обычно важно показать, что тестируются и успешные сценарии, и ошибки, и права доступа.
Определение:
Модульное тестирование API — это проверка отдельных частей backend-логики в изоляции: вьюх, сериализаторов, валидаторов, сервисных функций. В Django это обычно делают через unittest/pytest и тестовый клиент, а внешние зависимости подменяют моками. Цель — быстро и стабильно проверить поведение endpoint’ов на уровне одного модуля или компонента.
Пример использования:
Например, для POST /api/orders/ можно проверить, что при валидных данных создаётся заказ, а при пустом items возвращается ошибка валидации.
from django.test import TestCase
from rest_framework.test import APIClient
class OrderAPITest(TestCase):
def setUp(self):
self.client = APIClient()
def test_create_order_success(self):
payload = {
"items": [{"product_id": 1, "quantity": 2}]
}
response = self.client.post("/api/orders/", payload, format="json")
self.assertEqual(response.status_code, 201)
self.assertIn("id", response.data)
def test_create_order_validation_error(self):
payload = {"items": []}
response = self.client.post("/api/orders/", payload, format="json")
self.assertEqual(response.status_code, 400)
self.assertIn("items", response.data)
Пояснение кода:
В примере используется тестовый клиент Django REST Framework, который имитирует HTTP-запросы к API. Первый тест отправляет валидный payload и проверяет, что сервер вернул 201 Created и создал объект. Второй тест отправляет некорректные данные и проверяет, что API вернуло 400 Bad Request и сообщение об ошибке по полю items.
Ключевые моменты:
- Модульные тесты проверяют отдельные части API в изоляции, без лишних зависимостей.
- В Django удобно тестировать через
TestCaseилиpytestвместе сAPIClient. - Важно покрывать не только happy path, но и ошибки валидации, авторизацию и граничные случаи.
- Внешние сервисы и тяжёлые зависимости лучше мокать, чтобы тесты были быстрыми и стабильными.
- Если логика сложная, полезно отдельно тестировать сервисный слой, а не только endpoint’ы.