Hoe controleer je of je de juiste velden hebt geretourneerd?
sobes.tech AI
Antwoord van AI
Controleren of alleen de benodigde velden worden geretourneerd, kan op verschillende manieren, afhankelijk van het type antwoord (JSON, XML, enz.), het gebruikte hulpmiddel en het testniveau (API, E2E):
-
Schema-validatie van het antwoord (Schema Validation):
- De meest betrouwbare methode.
- Er wordt een schema (JSON Schema, XML Schema) gemaakt dat de structuur en de verwachte datatypes beschrijft.
- Het antwoord wordt gevalideerd tegen dit schema.
- Garandeert de aanwezigheid/afwezigheid van velden, hun types en, optioneel, reguliere expressies voor de waarden.
// Voorbeeld van JSON Schema voor een gebruikersantwoord { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "email": { "type": "string", "format": "email" } }, "required": ["id", "name", "email"] } -
Directe controle van aanwezigheid/afwezigheid van velden en waarden (Field Presence and Value Assertion):
- Parsing van het antwoord.
- Controle of elk verwacht veld aanwezig is.
- Controle of ongewenste velden niet aanwezig zijn.
- Controle van de datatypes van velden.
- Controle van de veldwaarden (met betrekking tot een specifieke waarde, reguliere expressie, bereik, enz.).
# Voorbeeld van JSON-antwoordcontrole in Python (met requests en 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() # Controle van aanwezigheid van velden assert "id" in data assert "name" in data assert "email" in data # Controle of ongewenste velden niet aanwezig zijn (bijvoorbeeld 'password') assert "password" not in data # Controle van datatypes assert isinstance(data["id"], int) assert isinstance(data["name"], str) assert isinstance(data["email"], str) # Controle van waarden (voorbeeld) assert data["id"] > 0 assert "@" in data["email"] # Eenvoudige controle van e-mailformaat -
Vergelijking met referentie (Golden Master / Snapshot Testing):
- Een correct antwoord (referentie) wordt opgeslagen.
- Het actuele antwoord wordt vergeleken met de referentie.
- Handig om de stabiliteit van de structuur te controleren, maar minder flexibel bij verwachte wijzigingen in de gegevens.
-
Gebruik van gespecialiseerde bibliotheken/frameworks:
- RestAssured (Java)
- Postman (Newman): stelt je in staat om tests te schrijven in JavaScript, inclusief schema- en veldcontroles.
- Pytest/unittest met bibliotheken voor JSON/XML.
De keuze van methode hangt af van de complexiteit van de antwoordstructuur, de vereisten voor precisie van de controle en de gebruikte technologische stack. Schema-validatie is de gouden standaard voor API-testen, omdat het alle aspecten van de structuur en datatypes dekt.