Назад к вопросам
Junior
72
questionbank

Как вы проверите, что вернулись именно нужные поля?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

Проверить, что вернулись именно нужные поля, можно несколькими способами, в зависимости от типа ответа (JSON, XML и т. д.), используемого инструмента и уровня тестирования (API, E2E):

  1. Проверка схемы ответа (Schema Validation):

    • Наиболее надежный способ.
    • Создается схема (JSON Schema, XML Schema) описывающая структуру и типы данных ожидаемого ответа.
    • Ответ валидируется на соответствие этой схеме.
    • Гарантирует наличие/отсутствие полей, их типы и, опционально, регулярные выражения для значений.
    // Пример JSON Schema для ответа с пользователем
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Прямая проверка наличия/отсутствия полей и значений (Field Presence and Value Assertion):

    • Парсинг ответа.
    • Проверка, что каждое ожидаемое поле присутствует.
    • Проверка, что нежелательные поля отсутствуют.
    • Проверка типов данных полей.
    • Проверка значений полей (на соответствие конкретному значению, регулярному выражению, диапазону и т. д.).
    # Пример проверки JSON ответа в Python (с использованием requests и pytest)
    import requests
    import pytest
    
    def test_user_response_fields():
        response = requests.get("http://api.example.com/users/1")
        assert response.status_code == 200
        data = response.json()
    
        # Проверка наличия полей
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Проверка отсутствия нежелательных полей (например, 'password')
        assert "password" not in data
    
        # Проверка типов полей
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Проверка значений (пример)
        assert data["id"] > 0
        assert "@" in data["email"] # Простейшая проверка формата email
    
  3. Сравнение с эталоном (Golden Master / Snapshot Testing):

    • Сохраняется заведомо правильный ответ (эталон).
    • Актуальный ответ сравнивается с эталоном.
    • Полезно для проверки стабильности структуры, но менее гибко при ожидаемых изменениях в данных.
  4. Использование специализированных библиотек/фреймворков:

    • RestAssured (Java)
    • Postman (Newman): позволяет писать тесты на JavaScript, включая проверки схемы и полей.
    • Pytest/unittest с библиотеками для работы с JSON/XML.

Выбор метода зависит от сложности структуры ответа, требований к точности проверки и используемого стека технологий. Схема валидация является золотым стандартом для API тестирования, так как она покрывает все аспекты структуры и типов данных.