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.


$config[zx-auto] not found$config[zx-overlay] not found