Ответ
Swagger (OpenAPI) — ключевой инструмент для тестирования REST API.
Как я его применяю:
-
Изучение и валидация спецификации:
- Проверяю полноту и корректность OpenAPI-спецификации (
swagger.jsonилиopenapi.yaml). - Изучаю эндпоинты, параметры, схемы запросов и ответов.
- Проверяю полноту и корректность OpenAPI-спецификации (
-
Ручное и исследовательское тестирование через Swagger UI:
- Быстрая отправка запросов для проверки доступности и базовой логики.
- Валидация ответов на соответствие задекларированным схемам и статус-кодам.
-
Автоматизация тестов на основе спецификации:
- Генерация клиентского кода или статических данных для тестов.
- Использование библиотек для валидации ответов сервера против схемы OpenAPI.
Пример интеграции в автотест (Python, pytest + requests):
import requests
import pytest
from openapi_core import validate_response
from openapi_core.spec.shortcuts import create_spec
# Загружаем спецификацию
spec_dict = requests.get('http://api.example.com/openapi.json').json()
spec = create_spec(spec_dict)
@pytest.mark.api
def test_get_user_by_id():
"""Тест проверяет, что ответ GET /users/{id} соответствует OpenAPI-схеме."""
# Выполняем запрос
response = requests.get('http://api.example.com/users/123')
# Валидируем ответ против спецификации
validate_response(spec, request=None, response=response)
# Дополнительные assertions
data = response.json()
assert response.status_code == 200
assert data['id'] == 123
assert 'email' in data
Почему это важно: OpenAPI служит единым источником истины (single source of truth) для контракта API, что позволяет автоматизировать валидацию и снизить количество ошибок, связанных с несоответствием документации.