Sobes.tech
Junior

Jak ověříte, že jste vrátili správná pole?

sobes.tech AI

Odpověď od AI

Ověřit, že jsou vrácena přesně požadovaná pole, lze několika způsoby v závislosti na typu odpovědi (JSON, XML atd.), používaném nástroji a úrovni testování (API, E2E):

  1. Validace schématu odpovědi (Schema Validation):

    • Nejspolehlivější způsob.
    • Vytvoří se schéma (JSON Schema, XML Schema), které popisuje strukturu a datové typy očekávané odpovědi.
    • Odpověď je validována podle tohoto schématu.
    • Zaručuje přítomnost/nepřítomnost polí, jejich typy a volitelně regulární výrazy pro hodnoty.
    // Příklad JSON schématu pro odpověď s uživatelem
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Přímá kontrola přítomnosti/nepřítomnosti polí a hodnot (Field Presence and Value Assertion):

    • Parsování odpovědi.
    • Kontrola, že každé očekávané pole je přítomno.
    • Kontrola, že nežádoucí pole chybí.
    • Kontrola datových typů polí.
    • Kontrola hodnot polí (shoda s konkrétní hodnotou, regulárním výrazem, rozsahem atd.).
    # Příklad kontroly JSON odpovědi v Pythonu (s použitím requests a 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()
    
        # Kontrola přítomnosti polí
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Kontrola, že nežádoucí pole (např. 'password') chybí
        assert "password" not in data
    
        # Kontrola typů polí
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Kontrola hodnot (příklad)
        assert data["id"] > 0
        assert "@" in data["email"] # Jednoduchá kontrola formátu emailu
    
  3. Porovnání s referenčním vzorem (Golden Master / Snapshot Testing):

    • Uloží se předem správná odpověď (referenční vzor).
    • Aktuální odpověď se porovná s referenčním vzorem.
    • Užitečné pro kontrolu stability struktury, ale méně flexibilní při očekávaných změnách v datech.
  4. Použití specializovaných knihoven/ramečků:

    • RestAssured (Java)
    • Postman (Newman): umožňuje psát testy v JavaScriptu, včetně kontrol schémat a polí.
    • Pytest/unittest s knihovnami pro práci s JSON/XML.

Volba metody závisí na složitosti struktury odpovědi, požadavcích na přesnost kontroly a používaném technologickém stacku. Validace schématu je zlatým standardem pro API testování, protože pokrývá všechny aspekty struktury a typů dat.