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):
-
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"] } -
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 -
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.
-
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.