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.