Webes API-k tesztelése Postman Gyűjteményekkel
1. Bemutatkozás
A webes API alapos teszteléséhez valamilyen webes kliensre van szükségünk az API végpontjaihoz való hozzáféréshez. A Postman egy önálló eszköz, amely webes API-kat gyakorol azáltal, hogy HTTP-kéréseket küld a szolgáltatáson kívülről.
A Postman használatakor nem csak HTTP teszt infrastruktúra kódot kell írnunk. Ehelyett létrehozunk tesztcsomagokat, az úgynevezett gyűjteményeket, és hagyjuk, hogy a Postman interakcióba lépjen az API-val.
Ebben az oktatóanyagban megtudhatjuk, hogyan hozhatunk létre egy Postman Gyűjteményt, amely tesztelheti a REST API-t.
2. Beállítás
Mielőtt nekilátnánk a gyűjteményünknek, be kell állítanunk a környezetet.
2.1. A Postman telepítése
A Postman elérhető Linux, Mac és Windows rendszerekhez. Az eszköz letölthető és telepíthető a Postman webhelyről.
A splash screen elvetése után láthatjuk a felhasználói felületet:
2.2. A szerver futtatása
A Postásnak egy élő HTTP szerverre van szüksége a kérelmek feldolgozásához. Ehhez az oktatóanyaghoz egy korábbi Baeldung projektet fogunk használni, rugós bakancs-pihenő, amely elérhető a GitHub-on.
Ahogy a címből sejthetjük, tavaszi-bakancs-pihenés egy Spring Boot alkalmazás. Az alkalmazást a Maven céllal építjük telepítés. Miután elkészült, elindítjuk a szervert az egyedi Maven céllal rugós-bakancs: fut.
Annak ellenőrzésére, hogy a szerver fut-e, a böngészőnkben elérhetjük ezt az URL-t:
// localhost: 8082 / spring-boot-rest / auth / foos
Ez a szolgáltatás memóriában lévő adatbázist használ. A szerver leállításakor minden rekord törlődik.
3. Postás gyűjtemény létrehozása
A Postman gyűjteménye a HTTP kérések sorozata. A Postman elmenti a kérések minden aspektusát, beleértve a fejléceket és az üzenet törzseket is. Ebből kifolyólag, félig automatizált tesztként futtathatjuk a kéréseket egymás után.
Kezdjük egy új gyűjtemény létrehozásával. Kattintson a legördülő nyílra a Új gombot, és válassza a lehetőséget Gyűjtemény:
Amikor az TEREMTENI ÚJ GYŰJTEMÉNYET megjelenik a párbeszédpanel, megnevezhetjük gyűjteményünketfoo API teszt“. Végül rákattintunk a Teremt gombra kattintva új kollekciónk megjelenhet a bal oldali listában:
A gyűjteményünk létrehozása után a kurzort ráhúzva két menügomb jeleníthető meg. A nyílgomb megnyílik egy jobb oldali panel, amely hozzáférést biztosít a Gyűjtemény futó. Ezzel szemben az ellipszis gomb egy legördülő menüt nyit meg, amely számos műveletet tartalmaz a gyűjteményen.
4. POST kérés hozzáadása
4.1. Új kérelem létrehozása
Most, hogy üres gyűjteményünk van, adjunk hozzá egy kérést, amely eltalálja az API-t. Pontosabban küldjünk POST üzenetet az URI-nak / auth / foos. Ehhez, megnyitjuk gyűjteményünkben az ellipszis menüt és kiválasztjuk Add Request.
Amikor az KÉRÉS MENTÉSE megjelenik egy párbeszédpanel, adjunk meg egy leíró nevet, például:adjunk hozzá egy foo ”. Ezután kattintson a gombra Mentés a foo API tesztbe.
A kérelem létrehozása után láthatjuk, hogy gyűjteményünk jelzi egy kérés. Ha azonban a gyűjteményünk nem bővült, akkor még nem láthatjuk a kérést. Ebben az esetben a gyűjteményre kattintva kibővíthetjük.
Most látnunk kell az új kérelmet a gyűjteményünk alatt. Megfigyelhetjük, hogy az új kérés alapértelmezés szerint egy HTTP GET, amelyet nem szeretnénk. Ezt a következő szakaszban javítjuk:
4.2. A kérelem szerkesztése
A kérelem szerkesztéséhez kattintson rá, és töltse be a kérésszerkesztő fülre:
Bár a kérésszerkesztőnek számos lehetősége van, egyelőre csak néhányra van szükségünk.
Először is használjuk a legördülő menüt a módszer GET-ről POST-ra váltására.
Másodszor, szükségünk van egy URL-re. A módszer legördülő menüjének jobb oldalán található egy szövegmező a kérelem URL-jéhez. Tehát most írjuk be:
// localhost: 8082 / spring-boot-rest / auth / foos
Az utolsó lépés egy üzenet törzsének megadása. Az URL-cím alatt a fülfejlécek sora található. Kattintson a gombra Test fül fejlécével juthat el a törzsszerkesztőhöz.
Ban,-ben Test lapon, közvetlenül a szövegterület felett található egy sor rádiógomb és egy legördülő menü. Ezek vezérlik a kérelem formázását és tartalmi típusát.
Szolgáltatásunk elfogadja a JSON adatokat, ezért kiválasztjuk a nyers Rádiógomb. A jobb oldali legördülő menüben a JSON (alkalmazás / JSON) tartalom típus.
A kódolás és a tartalomtípus beállítása után hozzáadjuk JSON tartalmunkat a szövegterülethez:
{"name": "Transformers"}
Végül ne felejtsük el elmenteni a változtatásokat a megnyomásával Ctrl-S vagy üti a Mentés gomb. A Mentés gomb jobbra található Küld gomb. A mentés után láthatjuk, hogy a kérés POST-ra frissült a bal oldali listában:
5. A kérelem futtatása
5.1. Egyetlen kérés futtatása
Egyetlen kérés futtatásához egyszerűen kattintson a gombra Küld gomb az URL-címetől jobbra. Ha rákattintunk Küld, a válasz panel megnyílik a kérelem panel alatt. Szükség lehet a lefelé görgetésre a megtekintéshez:
Vizsgáljuk meg eredményeinket. Pontosabban, a fejléc sávban azt látjuk, hogy kérésünk a státusszal sikeres volt 201 Létrehozva. Továbbá a válasz test azt mutatja, hogy a Transzformátorok rekord 1 azonosítót kapott.
5.2. A Collection Runner használata
Szemben a Küld gombra kattintva a gyűjtemény futója egy teljes gyűjteményt kivitelezhet. A gyűjtemény futójának elindításához a kurzort az egér fölé helyezzük foo API teszt kattintson a jobb oldali nyílra. A jobb oldali panelen láthatjuk a Fuss gombra, tehát kattintsunk erre:
Amikor rákattintunk a Fuss gombra kattintva a gyűjtemény futója új ablakban nyílik meg. Mivel a gyűjteményünkből indítottuk, a futó már inicializálódik a gyűjteményünkbe:
A kollekció futója olyan lehetőségeket kínál, amelyek befolyásolják a tesztfutást, de erre a gyakorlatra nem lesz szükségünk. Menjünk közvetlenül a Futtassa a foo API tesztet gombra, és kattintson erre.
Amikor futtatjuk a gyűjteményt, a nézet a következőre változik: Eredmények futtatása. Ebben a nézetben látunk egy listát azokról a tesztekről, amelyek zöldek a sikerhez és pirosak a sikertelenséghez.
Annak ellenére, hogy megkeresésünket elküldtük, a futó jelzi, hogy nulla teszt sikeres volt, és nulla teszt nem sikerült. Ennek oka, hogy még nem adtunk hozzá teszteket kérésünkhöz:
6. A válasz tesztelése
6.1. Tesztek hozzáadása egy kérelemhez
Teszt létrehozásához térjünk vissza a kérésszerkesztő panelre, ahol felépítettük a POST módszerünket. Kattintson a Tesztek fül, amely az URL alatt található. Amikor ezt megtesszük, megjelenik a Tests panel:
A Tesztek panelbe olyan JavaScript-et írunk, amely akkor fog végrehajtódni, amikor a szervertől megkapja a választ.
A Postman beépített változókat kínál, amelyek hozzáférést biztosítanak a kéréshez és a válaszhoz. Ezenkívül számos JavaScript könyvtár importálható a igényel () szintaxis.
Túl sok a parancsfájl-szolgáltatás, amelyet át lehetne fedni ebben az oktatóanyagban. A hivatalos Postás dokumentáció azonban kiváló forrás ebben a témában.
Folytassuk három teszt hozzáadásával a kérésünkhöz:
pm.test ("sikerállapot", () => pm.response.to.be.siker); pm.test ("a név helyes", () => pm.expect (pm.response.json (). name) .to.equal ("Transformers")); pm.test ("az id hozzárendelve", () => pm.expect (pm.response.json (). id) .to.be.not.null);
Ahogy látjuk, ezek a tesztek használják a globális délután a Postman által biztosított modul. Különösen a tesztek használnak pm.test (), pm.expect (), és pm.válasz.
A pm.test () function elfogad egy címkét és egy érvényesítési függvényt, mint például várható (). Használjuk pm.expect () feltételeket állítani a válasz tartalmára JSON.
A pm.válasz Az objektum hozzáférést biztosít a kiszolgálótól visszaküldött válasz különféle tulajdonságaihoz és műveleteihez. Az elérhető tulajdonságok többek között a válaszállapotot és a JSON-tartalmat tartalmazzák.
Mint mindig, ezzel is mentjük a változásainkat Ctrl-S vagy a Mentés gomb.
6.2. A tesztek lefuttatása
Most, hogy megvannak a tesztjeink, futtassuk újra a kérést. A Küld gomb megjeleníti az eredményeket a Vizsgálati eredmények a válasz panel lapja:
Hasonlóképpen, a kollekció futója most megjeleníti a teszt eredményeinket. Pontosabban, a bal felső sarokban található összefoglaló a frissítettet mutatja telt el és nem sikerült összesen. Az összefoglaló alatt található egy lista, amely az egyes teszteket az állapotával mutatja:
6.3. A Postás konzol megtekintése
A Postás konzol hasznos eszköz a szkriptek létrehozásához és hibakereséséhez. A konzolt a. Alatt találjuk Kilátás menü az elem nevével Mutasd a Postás konzolt. Indításakor a konzol új ablakban nyílik meg.
Amíg a konzol nyitva van, az összes HTTP kérést és választ rögzíti. Továbbá, ha a szkriptek használják console.log (), a Postás konzol megjeleníti ezeket az üzeneteket:
7. Kérések sorozatának létrehozása
Eddig egyetlen HTTP-kérelemre összpontosítottunk. Most nézzük meg, mit tehetünk több kéréssel. A kérések sorozatának összekapcsolásával szimulálhatjuk és tesztelhetjük az ügyfél-kiszolgáló munkafolyamatát.
Ebben a szakaszban alkalmazzuk a tanultakat a kérések sorozatának létrehozása érdekében. Pontosabban további három végrehajtási kérelmet adunk hozzá a már létrehozott POST-kérelem után. Ezek egy GET, egy DELETE és végül egy másik GET lesznek.
7.1. Válaszértékek rögzítése a változókban
Mielőtt létrehoznánk az új kéréseinket, módosítsuk a meglévő POST-kérelmünket. Mert nem tudjuk, hogy a szerver melyik azonosítót fogja kiosztani foo Például használhatunk egy változót a szerver által visszaadott azonosító rögzítésére.
Az azonosító rögzítéséhez még egy sort hozzáadunk a POST-kérelem tesztfájljának végéhez:
pm.variables.set ("id", pm.response.json (). id);
A pm.variables.set () függvény értéket vesz fel és ideiglenes változóhoz rendel. Ebben az esetben létrehozunk egy id változó az objektumunk id értékének tárolásához. A beállítás után később elérhetjük ezt a változót.
7.2. GET-kérelem hozzáadása
Az előző szakaszok technikáinak felhasználásával adjunk hozzá egy GET kérést a POST kérés után.
Ezzel a GET kéréssel ugyanezt visszakeresjük foo a POST-kérelem által létrehozott példány. Nevezzük el ezt a GET kérést:szerezz foo-t“.
A GET kérés URL-je:
// localhost: 8082 / spring-boot-rest / auth / foos / {{id}}
Ebben az URL-ben a id változó, amelyet korábban a POST kérés során állítottunk be. Így a GET kérésnek ugyanazt a példányt kell beolvasnia, amelyet a POST hozott létre.
Ha a változók szkripteken kívül jelennek meg, a kettős zárójeles szintaxissal hivatkozunk {{id}}.
Mivel nincs törzs a GET kérésre, folytassuk közvetlenül a Tesztek fülre. Mivel a tesztek hasonlóak, átmásolhatjuk a teszteket a POST kérésből, majd néhány módosítást elvégezhetünk.
Először, nem kell beállítanunk a id ismét változó, ezért ne másoljuk ezt a sort.
Másodszor, tudjuk, melyik azonosítóra számíthatunk ezúttal, ezért ellenőrizzük ezt az azonosítót. Használhatjuk a id változó ehhez:
pm.test ("sikerállapot", () => pm.response.to.be.siker); pm.test ("a név helyes", () => pm.expect (pm.response.json (). name) .to.equal ("Transformers")); pm.test ("az id helyes", () => pm.expect (pm.response.json (). id) .to.equal (pm.változók.get ("id")));
Mivel a kettős zárójeles szintaxis nem érvényes JavaScript, ezért a pm.variables.get () funkció eléréséhez id változó.
Végül mentse el a módosításokat, ahogyan korábban tettük.
7.3. DELETE kérés hozzáadása
Ezután hozzáadunk egy DELETE kérést, amely eltávolítja a foo objektumot a szerverről.
Folytatjuk egy új kérés hozzáadásával a GET után, és a módszerét DELETE-re állítva. Nevezhetjük ezt a kérésttörölj egy foo-t“.
A törlés URL-je megegyezik a GET URL-lel:
// localhost: 8082 / spring-boot-rest / auth / foos / {{id}}
A válasznak nem lesz teste, amelyet tesztelhet, de tesztelhetjük a válaszkódot. Ezért a DELETE kérelemnek csak egy tesztje lesz:
pm.test ("sikerállapot", () => pm.response.to.be.success);
7.4. A DELETE ellenőrzése
Végül adjunk hozzá egy újabb példányt a GET kérésből, hogy ellenőrizzük, hogy a DELETE valóban működött-e. Ezúttal másoljuk le az első GET-kérelmünket ahelyett, hogy nulláról készítenénk egy kérést.
A kérelem másolatához kattintson a jobb gombbal a kérelemre a legördülő menü megjelenítéséhez. Ezután kiválasztjuk Másolat.
Az ismétlődő kérelemben szerepel a szó Másolat a nevéhez fűzve. Nevezzük át a következőre:a törlés ellenőrzése”A félreértések elkerülése érdekében. A Átnevezés opció a jobb egérgombbal kattintva érhető el.
Alapértelmezés szerint a duplikált kérelem azonnal megjelenik az eredeti kérés után. Ennek eredményeként a TÖRLÉS kérelem alá kell húznunk.
Az utolsó lépés a tesztek módosítása. Mielőtt azonban ezt megtennénk, használjuk ki az alkalmat, hogy lássuk a sikertelen tesztet.
Másoltuk a GET kérést és áthelyeztük a DELETE után, de a teszteket még nem frissítettük. Mivel a DELETE kérelemnek törölnie kellett volna az objektumot, a teszteknek sikertelennek kell lenniük.
Ügyeljünk arra, hogy mentse az összes kérésünket, majd nyomja meg a gombot Próbálja újra a gyűjtőfutóban. A várakozásoknak megfelelően tesztjeink kudarcot vallottak:
Most, hogy rövid kitérőnk elkészült, javítsuk ki a teszteket.
A sikertelen tesztek áttekintésével láthatjuk, hogy a szerver 500-as állapotban válaszol. Ezért tesztünk során megváltoztatjuk az állapotot.
Továbbá a sikertelen válasz megtekintésével a Postás konzol, megtudjuk, hogy a válasz magában foglalja a ok ingatlan. Sőt, a ok a tulajdonság tartalmazza a „Nincs érték“. Ezt is tesztelhetjük:
pm.test ("állapot 500", () => pm.response.to.have.status (500)); pm.test ("nincs érték jelen", () => pm.expect (pm.response.json (). oka) .to.equal ("Nincs érték jelen"));
7.5. A teljes gyűjtemény futtatása
Most, hogy az összes kérést hozzáadtuk, futtassuk a teljes gyűjteményt a gyűjtemény futójában:
Ha minden a tervek szerint alakult, akkor kilenc sikeres tesztet kell elvégeznünk.
8. A gyűjtemény exportálása és importálása
Míg a Postás magán, helyi helyen tárolja a gyűjteményeinket, érdemes lehet megosztanunk a gyűjteményt. Ehhez a gyűjteményt JSON fájlba exportáljuk.
A Export parancs a gyűjtemény ellipszis menüjében érhető el. Amikor a rendszer kéri a JSON fájlverziót, válassza ki a legújabb ajánlott verziót.
Miután kiválasztottuk a fájl verzióját, a Postman fájlnevet és helyet kér az exportált gyűjteményhez. Választhatunk egy mappát például a GitHub projektünkön belül.
Korábban exportált gyűjtemény importálásához a Importálás gomb. Megtalálhatjuk a Postás főablakának eszköztárán. Amikor a Postás fájl helyét kéri, navigálhatunk az importálni kívánt JSON fájlra.
Érdemes megjegyezni, hogy a Postman nem követi az exportált fájlokat. Ennek eredményeként a Postman mindaddig nem mutat külső változásokat, amíg újra nem importáljuk a gyűjteményt.
9. Következtetés
Ebben a cikkben a Postman segítségével félautomata teszteket készítettünk egy REST API-hoz. Noha ez a cikk bevezetésül szolgál a Postman alapvető szolgáltatásaihoz, alig kaparintjuk meg a képességeinek felületét. A Postman online dokumentáció értékes forrás a mélyebb feltáráshoz.
Az oktatóanyagban létrehozott gyűjtemény elérhető a GitHubon.