Sobes.tech
Junior

Как ще проверите дали сте върнали правилните полета?

sobes.tech AI

Отговор от AI

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

  1. Валидация на схемата на отговора (Schema Validation):

    • Най-надеждният начин.
    • Създава се схема (JSON Schema, XML Schema), която описва структурата и типовете данни на очаквания отговор.
    • Отговорът се валидира спрямо тази схема.
    • Гарантира наличието/липсата на полета, техните типове и, по желание, регулярни изрази за стойностите.
    // Пример за JSON схема за отговор с потребител
    {
      "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 тестиране, тъй като покрива всички аспекти на структурата и типовете данни.