Overenie schémy JSON so zaistením REST
1. Prehľad
Knižnica so zárukou REST poskytuje podporu pre testovanie rozhraní REST API, zvyčajne vo formáte JSON.
Z času na čas môže byť žiaduce, bez toho, aby ste podrobne analyzovali odpoveď, vedieť, či je telo JSON v súlade s určitým formátom JSON.
V tomto rýchlom návode sa pozrieme na to, ako na to môžeme overiť odpoveď JSON na základe preddefinovanej schémy JSON.
2. Inštalácia
Počiatočné nastavenie so zárukou REST je rovnaké ako v predchádzajúcom článku.
Okrem toho musíme zahrnúť aj json-schema-validator modul v pom.xml spis:
test io.rest zabezpečený json-schema-validator 3.3.0
Ak sa chcete ubezpečiť, že máte najnovšiu verziu, kliknite na tento odkaz.
3. Validácia schémy JSON
Pozrime sa na príklad.
Ako schému JSON použijeme JSON uložený v súbore s názvom event_0.json, ktorý je prítomný v triede:
{"id": "390", "data": {"leagueId": 35, "homeTeam": "Nórsko", "visitTeam": "Anglicko",}, "odds": [{"price": "1,30 "," name ":" 1 "}, {" price ":" 5.25 "," name ":" X "}]}}
Potom za predpokladu, že sa jedná o všeobecný formát, za ktorým nasledujú všetky údaje vrátené našim rozhraním REST API, môžeme skontrolovať konformitu odpovede JSON takto:
@Test public void givenUrl_whenJsonResponseConformsToSchema_thenCorrect () {get ("/ events? Id = 390"). Then (). AssertThat () .body (matchJsonSchemaInClasspath ("event_0.json")); }
Všimnite si, že stále budeme staticky importovať matchJsonSchemaInClasspath od io.restassured.module.jsv.JsonSchemaValidator.
4. Validácia schémy JSON nastavenie
4.1. Potvrďte odpoveď
The json-schema-validator modul REST-assured nám dáva moc vykonávať jemnozrnnú validáciu definovaním našich vlastných konfiguračných pravidiel.
Povedzme, že chceme, aby naša validácia vždy používala schému JSON verzie 4:
@Test public void givenUrl_whenValidatesResponseWithInstanceSettings_thenCorrect () {JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder ().) get ("/ events? id = 390"). then (). assertThat () .body (matchJsonSchemaInClasspath ("event_0.json"). using (jsonSchemaFactory)); }
Urobili by sme to pomocou JsonSchemaFactory a upresnite verziu 4 SchemaVersion a tvrdí, že túto schému používa pri podaní žiadosti.
4.2. Skontrolujte validácie
V predvolenom nastavení je json-schema-validator spustí skontrolované overenia na reťazci odpovedí JSON. To znamená, že ak je definovaná schéma šanca ako pole ako v nasledujúcom JSON:
{"odds": [{"price": "1.30", "name": "1"}, {"price": "5.25", "name": "X"}]}}
potom bude validátor vždy očakávať pole ako hodnotu pre šanca, teda odpoveď kde šanca je a String zlyhá pri overovaní. Ak by sme teda chceli byť pri svojich odpovediach menej prísni, môžeme počas overovania pridať vlastné pravidlo tak, že najskôr urobíme nasledujúci statický import:
io.restassured.module.jsv.JsonSchemaValidatorSettings.settings;
potom vykonajte test s kontrolou platnosti nastavenou na nepravdivé:
@Test public void givenUrl_whenValidatesResponseWithStaticSettings_thenCorrect () {get ("/ events? Id = 390"). Then (). AssertThat (). Body (matchJsonSchemaInClasspath ("event_0.json"). Using (settings (). With (). CheckedValid (nepravda))); }
4.3. Konfigurácia globálneho overenia
Tieto prispôsobenia sú veľmi flexibilné, ale pri veľkom počte testov by sme museli definovať validáciu pre každý test, čo je ťažkopádne a málo udržiavateľné.
Aby sa tomu zabránilo, máme slobodu definovať našu konfiguráciu iba raz a nechať ju platiť pre všetky testy.
Nakonfigurujeme overenie tak, aby nebolo začiarknuté a vždy ho používalo proti schéme JSON verzie 3:
JsonSchemaFactory factory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder () .setDefaultVersion (SchemaVersion.DRAFTV3) .freeze ()). Freeze (); JsonSchemaValidator.settings = settings () .with (). JsonSchemaFactory (factory). A (). With (). CheckedValidation (false);
potom pre odstránenie tejto konfigurácie zavolajte metódu resetovania:
JsonSchemaValidator.reset ();
5. Záver
V tomto článku sme si ukázali, ako môžeme overiť odpoveď JSON proti schéme pri použití zaistenia REST.
Celý zdrojový kód príkladu je ako vždy k dispozícii na serveri GitHub.