Cum vei verifica că ai returnat câmpurile corecte?
sobes.tech AI
Răspuns de la AI
Verificarea faptului că sunt returnate exact câmpurile necesare poate fi realizată în mai multe moduri, în funcție de tipul răspunsului (JSON, XML etc.), instrumentul utilizat și nivelul de testare (API, E2E):
-
Validarea schemei răspunsului (Schema Validation):
- Cel mai fiabil mod.
- Se creează o schemă (JSON Schema, XML Schema) care descrie structura și tipurile de date așteptate.
- Răspunsul este validat conform acestei scheme.
- Asigură prezența/absența câmpurilor, tipurile lor și, opțional, expresii regulate pentru valori.
// Exemplu de JSON Schema pentru răspunsul cu utilizator { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "email": { "type": "string", "format": "email" } }, "required": ["id", "name", "email"] } -
Verificarea directă a prezenței/absenței câmpurilor și valorilor (Field Presence and Value Assertion):
- Parsarea răspunsului.
- Verificarea dacă fiecare câmp așteptat este prezent.
- Verificarea dacă câmpurile nedorite nu sunt prezente.
- Verificarea tipurilor de date ale câmpurilor.
- Verificarea valorilor câmpurilor (în raport cu o valoare specifică, expresie regulată, interval etc.).
# Exemplu de verificare a răspunsului JSON în Python (cu requests și 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() # Verificarea prezenței câmpurilor assert "id" in data assert "name" in data assert "email" in data # Verificarea că câmpurile nedorite nu sunt prezente (de exemplu, 'password') assert "password" not in data # Verificarea tipurilor de câmpuri assert isinstance(data["id"], int) assert isinstance(data["name"], str) assert isinstance(data["email"], str) # Verificarea valorilor (exemplu) assert data["id"] > 0 assert "@" in data["email"] # Verificare simplă a formatului email -
Compararea cu referința (Golden Master / Snapshot Testing):
- Se salvează un răspuns corect cunoscut (referință).
- Răspunsul actual este comparat cu referința.
- Util pentru verificarea stabilității structurii, dar mai puțin flexibil în fața modificărilor așteptate în date.
-
Utilizarea bibliotecilor/frameworkurilor specializate:
- RestAssured (Java)
- Postman (Newman): permite scrierea de teste în JavaScript, inclusiv verificări de schemă și câmpuri.
- Pytest/unittest cu biblioteci pentru JSON/XML.
Alegerea metodei depinde de complexitatea structurii răspunsului, de cerințele de precizie ale verificării și de stack-ul tehnologic utilizat. Validarea schemelor este standardul de aur pentru testarea API-urilor, deoarece acoperă toate aspectele structurii și tipurilor de date.