JSON séma érvényesítése REST-biztosított

1. Áttekintés

A REST-biztosított könyvtár támogatást nyújt a REST API-k teszteléséhez, általában JSON formátumban.

Időről időre kívánatos lehet, a válasz részletes elemzése nélkül, először tudni, hogy a JSON törzs megfelel-e egy bizonyos JSON formátumnak.

Ebben a gyors bemutatóban megnézzük, hogyan egy előre meghatározott JSON séma alapján érvényesíthetünk egy JSON választ.

2. Beállítás

A REST által biztosított kezdeti beállítás megegyezik az előző cikkünkkel.

Ezenkívül fel kell tüntetnünk a json-schema-validator modul a pom.xml fájl:

 io.rest-biztosított json-schema-validator 3.3.0 teszt 

A legfrissebb verzió biztosításához kövesse ezt a linket.

3. JSON séma érvényesítése

Nézzünk meg egy példát.

JSON-sémaként egy JSON-t fogunk használni, amelyet egy úgynevezett fájlba mentünk event_0.json, amely az osztályúton van:

{"id": "390", "data": {"leagueId": 35, "homeTeam": "Norvégia", "visitTeam": "Anglia",}, "odds": [{"price": "1.30 "," név ":" 1 "}, {" ár ":" 5,25 "," név ":" X "}]}

Ezután feltételezve, hogy ez az általános formátum, amelyet a REST API által visszaküldött összes adat követ, akkor ellenőrizhetjük a JSON válasz megfelelőségét:

@Test public void givenUrl_whenJsonResponseConformsToSchema_thenCorrect () {get ("/ events? Id = 390"). Then (). AssertThat () .body (matchJsonSchemaInClasspath ("event_0.json")); }

Vegye figyelembe, hogy továbbra is statikusan importálunk matchJsonSchemaInClasspath tól től io.restassured.module.jsv.JsonSchemaValidator.

4. JSON-séma érvényesítése Beállítások

4.1. Válasz érvényesítése

A json-schema-validator A REST-assured modul a saját egyéni konfigurációs szabályaink megadásával ad erőt arra, hogy aprólékos ellenőrzést hajtsunk végre.

Tegyük fel, hogy azt akarjuk, hogy az érvényesítés mindig a JSON 4. séma verzióját használja:

@Test public void givenUrl_whenValidatesResponseWithInstanceSettings_thenCorrect () {JsonSchemaFactory jsonSchemaFactory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder (). get ("/ events? id = 390"). majd (). assertThat () .body (matchJsonSchemaInClasspath ("event_0.json") .using (jsonSchemaFactory)); }

Ezt a JsonSchemaFactory és adja meg a 4. verziót SchemaVersion és állítsa be, hogy ezt a sémát használja, amikor egy kérést benyújtanak.

4.2. Ellenőrizze az érvényesítéseket

Alapértelmezés szerint a json-schema-validator ellenőrzött érvényesítéseket futtat a JSON válasz karakterláncon. Ez azt jelenti, hogy ha a séma meghatározza esély tömbként, mint a következő JSON-ban:

{"odds": [{"price": "1.30", "name": "1"}, {"price": "5.25", "name": "X"}]}

akkor az ellenőrző mindig egy tömböt vár majd az értékeként esély, ezért válasz, ahol esély egy Húr sikertelen lesz az érvényesítés. Tehát, ha kevésbé akarunk szigorúbb lenni a válaszainkkal, akkor az érvényesítés során hozzáadhatunk egy egyéni szabályt, ha először a következő statikus importálást hajtjuk végre:

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

majd hajtsa végre a tesztet az érvényesítési ellenőrzéssel hamis:

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

4.3. Globális érvényesítési konfiguráció

Ezek a testreszabások nagyon rugalmasak, de nagyszámú teszt mellett minden tesztre érvényes validációt kellene meghatároznunk, ez nehézkes és nem túl karbantartható.

Ennek elkerülése érdekében szabadon meghatározhatjuk a konfigurációnkat csak egyszer, és hagyhatjuk, hogy ez az összes tesztre érvényes legyen.

Beállítjuk az ellenőrzést, hogy ne ellenőrizzük, és mindig a JSON 3. séma verziójával együtt használjuk:

JsonSchemaFactory factory = JsonSchemaFactory.newBuilder () .setValidationConfiguration (ValidationConfiguration.newBuilder () .setDefaultVersion (SchemaVersion.DRAFTV3) .freeze ()). Freeze (); JsonSchemaValidator.settings = settings () .with (). JsonSchemaFactory (factory) .and (). With (). Ellenőrzött érvényesítés (hamis);

majd a konfiguráció eltávolításához hívja meg a reset metódust:

JsonSchemaValidator.reset ();

5. Következtetés

Ebben a cikkben megmutattuk, hogyan tudjuk érvényesíteni a JSON-választ egy sémával szemben, ha a REST-assured alkalmazást használja.

Mint mindig, a példa teljes forráskódja elérhető a GitHubon.