JSON provjera sheme uz REST-osigurano

1. Pregled

REST-osigurana knjižnica pruža podršku za testiranje REST API-ja, obično u JSON formatu.

S vremena na vrijeme može biti poželjno, bez detaljne analize odgovora, prvo znati odgovara li JSON tijelo određenom JSON formatu.

U ovom brzom uputstvu pogledat ćemo kako možemo potvrditi JSON odgovor na temelju unaprijed definirane JSON sheme.

2. Postavljanje

Početno postavljanje s REST-om je isto kao i naš prethodni članak.

Osim toga, također moramo uključiti i json-schema-validator modul u pom.xml datoteka:

 io.rest-assured json-schema-validator 3.3.0 test 

Slijedite ovu vezu kako biste bili sigurni da imate najnoviju verziju.

3. Provjera JSON sheme

Pogledajmo primjer.

Kao JSON shemu koristit ćemo JSON spremljen u datoteku koja se zove event_0.json, koji je prisutan u stazi:

{"id": "390", "data": {"leagueId": 35, "homeTeam": "Norway", "visitTeam": "England",}, "tečajevi": [{"price": "1.30 "," name ":" 1 "}, {" price ":" 5.25 "," name ":" X "}]}

Tada pod pretpostavkom da je ovo općeniti format praćen svim podacima koje vraća naš REST API, tada možemo provjeriti JSON odgovor na sukladnost ovako:

@Test javna praznina givenUrl_whenJsonResponseConformsToSchema_thenCorrect () {get ("/ events? Id = 390"). Then (). AssertThat () .body (matchesJsonSchemaInClasspath ("event_0.json")); }

Primijetite da ćemo i dalje statički uvoziti odgovaraJsonSchemaInClasspath iz io.restassured.module.jsv.JsonSchemaValidator.

4. Provjera JSON sheme Postavke

4.1. Potvrdite odgovor

The json-schema-validator modul REST-assured daje nam moć da izvršimo detaljnu provjeru valjanosti definiranjem vlastitih prilagođenih pravila konfiguracije.

Recimo da želimo da naša provjera valjanosti uvijek koristi JSON shemu verzije 4:

@Test javna praznina givenUrl_whenValidatesResponseWithInstanceSettings_thenCorrect () {JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilderVefDaverDevDefrvDavDefrvDevdrіfDevdrіfDevdrіfDevdrіfrеfrefrv. get ("/ events? id = 390"). then (). assertThat () .body (matchJsonSchemaInClasspath ("event_0.json") .using (jsonSchemaFactory)); }

To bismo učinili pomoću JsonSchemaFactory i navedite verziju 4 SchemaVersion i ustvrdite da koristi tu shemu kad se podnese zahtjev.

4.2. Provjerite provjere valjanosti

Prema zadanim postavkama json-schema-validator izvodi provjerene provjere valjanosti na JSON stringu odgovora. To znači da ako shema definira izgledi kao niz kao u sljedećem JSON-u:

{"tečajevi": [{"cijena": "1,30", "ime": "1"}, {"cijena": "5,25", "naziv": "X"}]}

tada će validator uvijek očekivati ​​niz kao vrijednost za izgledi, dakle odgovor gdje izgledi je Niz neće uspjeti u provjeri valjanosti. Dakle, ako želimo biti manje strogi prema svojim odgovorima, možemo dodati prilagođeno pravilo tijekom provjere valjanosti tako što ćemo prvo izvršiti sljedeći statički uvoz:

io.restassured.module.jsv.JsonSchemaValidatorSettings.settings;

zatim izvršite test s provjerom valjanosti postavljenom na lažno:

@Test public void givenUrl_whenValidatesResponseWithStaticSettings_thenCorrect () {get ("/ events? Id = 390"). Then (). AssertThat (). Body (matchJsonSchemaInClasspath ("event_0.json"). Using (settings (). With (). (lažno))); }

4.3. Konfiguracija globalne provjere valjanosti

Te su prilagodbe vrlo fleksibilne, ali s velikim brojem testova morali bismo definirati provjeru valjanosti za svaki test, to je glomazno i ​​nije baš održivo.

Da biste to izbjegli, imamo slobodu definirati našu konfiguraciju samo jednom i pustiti je da se odnosi na sve testove.

Konfigurirat ćemo provjeru valjanosti i uvijek je koristiti u odnosu na JSON shemu 3:

JsonSchemaFactory factory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder () .setDefaultVersion (SchemaVersion.DRAFTV3) .freeze ()). Freeze (); JsonSchemaValidator.settings = settings () .with (). JsonSchemaFactory (tvornica) .and (). With (). CheckValidation (false);

zatim za uklanjanje ove konfiguracije pozovite metodu resetiranja:

JsonSchemaValidator.reset ();

5. Zaključak

U ovom smo članku pokazali kako možemo provjeriti valjanost JSON odgovora prema shemi kada koristimo REST-assured.

Kao i uvijek, puni izvorni kod za primjer dostupan je na GitHub-u.


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