Sobes.tech
Junior

Ako skontrolujete, že ste vrátili správne polia?

sobes.tech AI

Odpoveď od AI

Overte, či sú správne vrátené požadované polia, je možné niekoľkými spôsobmi v závislosti od typu odpovede (JSON, XML atď.), používaného nástroja a úrovne testovania (API, E2E):

  1. Validácia schémy odpovede (Schema Validation):

    • Najspoľahlivejší spôsob.
    • Vytvorí sa schéma (JSON Schema, XML Schema), ktorá opisuje štruktúru a dátové typy očakávanej odpovede.
    • Odpoveď sa validuje podľa tejto schémy.
    • Zaručuje prítomnosť/absenciu polí, ich typy a voliteľne regulárne výrazy pre hodnoty.
    // Príklad JSON schémy pre odpoveď s používateľom
    {
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" },
        "email": { "type": "string", "format": "email" }
      },
      "required": ["id", "name", "email"]
    }
    
  2. Priama kontrola prítomnosti/absencie polí a hodnôt (Field Presence and Value Assertion):

    • Parsovanie odpovede.
    • Kontrola, že každé očakávané pole je prítomné.
    • Kontrola, že neželané polia chýbajú.
    • Kontrola typov dát polí.
    • Kontrola hodnôt polí (zhoda s konkrétnou hodnotou, regulárnym výrazom, rozsahom atď.).
    # Príklad kontroly JSON odpovede v Pythone (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 prítomnosti polí
        assert "id" in data
        assert "name" in data
        assert "email" in data
    
        # Kontrola, že neželané polia (napr. 'password') neexistujú
        assert "password" not in data
    
        # Kontrola typov polí
        assert isinstance(data["id"], int)
        assert isinstance(data["name"], str)
        assert isinstance(data["email"], str)
    
        # Kontrola hodnôt (príklad)
        assert data["id"] > 0
        assert "@" in data["email"] # Jednoduchá kontrola formátu emailu
    
  3. Porovnanie s referenčným vzorom (Golden Master / Snapshot Testing):

    • Uloží sa vopred správna odpoveď (referenčný vzor).
    • Aktuálna odpoveď sa porovná s referenčným.
    • Užitečné na kontrolu stability štruktúry, ale menej flexibilné pri očakávaných zmenách v dátach.
  4. Použitie špecializovaných knižníc/ramečkov:

    • RestAssured (Java)
    • Postman (Newman): umožňuje písanie testov v JavaScripte, vrátane kontrol štruktúr a polí.
    • Pytest/unittest s knižnicami na prácu s JSON/XML.

Výber metódy závisí od zložitosti štruktúry odpovede, požiadaviek na presnosť kontroly a používaného technologického stacku. Validácia schémy je zlatým štandardom pre API testovanie, pretože pokrýva všetky aspekty štruktúry a typov dát.