Testiranje web API-ja s zbirkama poštara

1. Uvod

Da bismo temeljito testirali web API, potreban nam je nekakav web klijent za pristup krajnjim točkama API-ja. Poštar je samostalni alat koji izvršava web API-je izrađujući HTTP zahtjeve izvan usluge.

Kada koristimo Poštara, ne trebamo pisati nijedan infrastrukturni kod HTTP klijenta samo radi testiranja. Umjesto toga, stvaramo testne pakete koji se nazivaju zbirkama i dopuštamo poštaru da komunicira s našim API-jem.

U ovom uputstvu vidjet ćemo kako stvoriti zbirku poštara koja može testirati REST API.

2. Postavljanje

Prije nego što započnemo s našom kolekcijom, trebamo postaviti okruženje.

2.1. Instaliranje poštara

Poštar je dostupan za Linux, Mac i Windows. Alat se može preuzeti i instalirati s web mjesta Postman.

Nakon odbacivanja početnog zaslona, ​​možemo vidjeti korisničko sučelje:

2.2. Pokretanje poslužitelja

Poštaru je potreban živi HTTP poslužitelj za obradu zahtjeva. Za ovaj ćemo vodič upotrijebiti prethodni Baeldung projekt, opruga za odmaranje, koji je dostupan na GitHubu.

Kao što možemo pretpostaviti iz naslova, opruga-odmorište je aplikacija Spring Boot. Aplikaciju gradimo s ciljem Maven instalirati. Jednom izgrađeni, pokrećemo poslužitelj s prilagođenim Maven ciljem spring-boot: trčanje.

Da bismo provjerili radi li poslužitelj, u našem pregledniku možemo pritisnuti ovaj URL:

// localhost: 8082 / spring-boot-rest / auth / foos

Ova usluga koristi bazu podataka u memoriji. Svi se zapisi brišu kad se poslužitelj zaustavi.

3. Stvaranje zbirke poštara

Zbirka u Poštaru niz je HTTP zahtjeva. Poštar sprema svaki aspekt zahtjeva, uključujući zaglavlja i tijela poruka. Stoga, zahtjeve možemo pokretati u slijedu kao poluautomatizirane testove.

Počnimo s izradom nove kolekcije. Možemo kliknuti strelicu padajućeg izbornika na Novi gumb i odaberite Kolekcija:

Kada IZRADITE NOVU ZBIRKU pojavi se dijaloški okvir, možemo imenovati našu zbirku “foo API test“. Na kraju kliknemo na Stvoriti gumb da biste vidjeli kako se naša nova kolekcija pojavljuje na popisu s lijeve strane:

Jednom kada je naša kolekcija stvorena, možemo preko nje prelaziti kursorom i otkriti dva gumba izbornika. Gumb sa strelicom otvara povučenu desnu ploču koja omogućuje pristup Trkač kolekcije. Suprotno tome, gumb s elipsom otvara padajući izbornik koji sadrži niz operacija na zbirci.

4. Dodavanje POST zahtjeva

4.1. Izrada novog zahtjeva

Sad kad imamo praznu zbirku, dodajmo zahtjev koji pogađa naš API. Konkretno, pošaljite POST poruku na URI / auth / foos. Napraviti to, otvorimo izbornik s elipsom u našoj kolekciji i odaberemo Dodaj zahtjev.

Kada SPREMI ZAHTJEV pojavit će se dijaloški okvir, navedimo opisni naziv, poput "dodati foo ”. Zatim kliknite gumb Spremi u foo API test.

Jednom kada se zahtjev stvori, možemo vidjeti da naša zbirka ukazuje jedan zahtjev. Međutim, ako naša kolekcija nije proširena, zahtjev još ne možemo vidjeti. U tom slučaju možemo kliknuti zbirku da bismo je proširili.

Sada bismo trebali vidjeti novi zahtjev naveden u našoj zbirci. Možemo primijetiti da je novi zahtjev prema zadanim postavkama HTTP GET, što nije ono što želimo. To ćemo popraviti u sljedećem odjeljku:

4.2. Uređivanje zahtjeva

Da uredimo zahtjev, kliknimo ga, učitavajući ga na karticu uređivača zahtjeva:

Iako uređivač zahtjeva ima brojne mogućnosti, zasad nam trebaju samo nekoliko.

Prvo, upotrijebimo padajući izbornik za promjenu metode iz GET u POST.

Drugo, trebamo URL. Desno od padajućeg izbornika metode nalazi se tekstualni okvir za URL zahtjeva. Pa, uđimo sada u to:

// localhost: 8082 / spring-boot-rest / auth / foos

Posljednji korak je pružanje tijela poruke. Ispod URL adrese nalazi se red zaglavlja kartica. Kliknut ćemo Tijelo zaglavlje kartice da biste došli do uređivača tijela.

U Tijelo tab, odmah iznad područja teksta, nalazi se niz radio gumba i padajući izbornik. Oni kontroliraju oblikovanje i vrstu sadržaja zahtjeva.

Naša usluga prihvaća JSON podatke, pa odabiremo sirovi Radio gumb. U padajućem izborniku s desne strane primjenjujemo JSON (aplikacija / json) vrsta sadržaja.

Nakon što se postave kodiranje i vrsta sadržaja, u područje teksta dodajemo naš JSON sadržaj:

{"name": "Transformatori"}

Konačno, budimo sigurni da spremimo promjene pritiskom na Ctrl-S ili udaranje Uštedjeti dugme. The Uštedjeti gumb nalazi se s desne strane gumba Poslati dugme. Nakon što spremimo, možemo vidjeti da je zahtjev ažuriran na POST na popisu s lijeve strane:

5. Pokretanje zahtjeva

5.1. Pokretanje jednog zahtjeva

Da bismo pokrenuli jedan zahtjev, samo kliknemo na Poslati dugme desno od URL adrese. Jednom kad kliknemo Poslati, ploča odgovora otvorit će se ispod ploče zahtjeva. Možda će biti potrebno pomaknuti se prema dolje da biste je vidjeli:

Ispitajmo naše rezultate. Točnije, na traci zaglavlja vidimo da je naš zahtjev uspio sa statusom 201 Stvoreno. Nadalje, tijelo za odgovor pokazuje da naš Transformatori zapis je dobio ID 1.

5.2. Korištenje pokretačkog programa Collection

Za razliku od Poslati gumb, pokretač kolekcije može izvršiti cijelu kolekciju. Da bismo pokrenuli pokretač kolekcije, zadržite pokazivač iznad našeg foo API test kolekciju i kliknite strelicu udesno. Na povucenoj desnoj ploči možemo vidjeti a Trčanje , pa hajde da kliknemo na to:

Kada kliknemo na Trčanje gumb pokretač kolekcije otvara se u novom prozoru. Budući da smo ga pokrenuli iz naše kolekcije, pokretač je već inicijaliziran za našu kolekciju:

Pokretač za prikupljanje nudi opcije koje utječu na probno pokretanje, ali one nam neće biti potrebne za ovu vježbu. Idemo izravno na Pokrenite test API-ja foo na dnu i kliknite to.

Kada pokrenemo zbirku, prikaz se mijenja u Pokreni rezultate. U ovom pogledu, vidimo popis testova koji su označeni zelenom za uspjeh i crvenom za neuspjeh.

Iako je naš zahtjev poslan, trkač pokazuje da nije prošlo nula testova, a nula testova nije uspjelo. To je zato što još nismo dodali testove svom zahtjevu:

6. Testiranje odgovora

6.1. Dodavanje testova u zahtjev

Da bismo stvorili test, vratimo se na ploču za uređivanje zahtjeva na kojoj smo izgradili našu POST metodu. Kliknemo na Ispitivanja kartica koja se nalazi ispod URL-a. Kada to učinimo, pojavit će se ploča Tests:

U ploču Testovi pišemo JavaScript koji će se izvršiti kada odgovor dobije poslužitelj.

Poštar nudi ugrađene varijable koje omogućuju pristup zahtjevu i odgovoru. Nadalje, brojne JavaScript knjižnice mogu se uvesti pomoću zahtijeva () sintaksa.

Previše je značajki skriptiranja za obuhvatiti u ovom vodiču. Međutim, službena dokumentacija poštara izvrstan je izvor o ovoj temi.

Nastavimo dodajući tri zahtjeva našem zahtjevu:

pm.test ("status uspjeha", () => pm.response.to.be.success); pm.test ("naziv je točan", () => pm.expect (pm.response.json (). name) .to.equal ("Transformatori")); pm.test ("dodijeljen je id", () => pm.expect (pm.response.json (). id) .to.be.not.null);

Kao što vidimo, ovi testovi koriste globalno popodne modul osigurao poštar. Testovi se posebno koriste pm.test (), pm.expect (), i pm.odgovor.

The pm.test () funkcija prihvaća oznaku i funkciju tvrdnje, kao što su očekivati(). Koristimo pm.expect () da se utvrde uvjeti o sadržaju odgovora JSON.

The pm.odgovor objekt omogućuje pristup raznim svojstvima i operacijama na odgovoru vraćenom s poslužitelja. Dostupna svojstva, između ostalog, uključuju status odgovora i JSON sadržaj.

Kao i uvijek, svoje promjene čuvamo s Ctrl-S ili Uštedjeti dugme.

6.2. Pokretanje testova

Sad kad imamo testove, pokrenimo zahtjev ponovo. Pritiskom na Poslati gumb prikazuje rezultate u Rezultati ispitivanja kartica odgovorne ploče:

Isto tako, pokretač kolekcije sada prikazuje naše rezultate testa. Točnije, sažetak u gornjem lijevom kutu prikazuje ažurirano prošao i neuspjeh ukupno. Ispod sažetka nalazi se popis koji prikazuje svaki test sa statusom:

6.3. Pregled konzole poštara

The Konzola poštara je koristan alat za stvaranje i otklanjanje pogrešaka u skriptama. Konzolu možemo pronaći ispod Pogled izbornik s nazivom stavke Pokaži konzolu poštara. Kada se pokrene, konzola se otvara u novom prozoru.

Dok je konzola otvorena, bilježi sve HTTP zahtjeve i odgovore. Nadalje, kada skripte koriste console.log (), the Konzola poštara prikazuje te poruke:

7. Stvaranje niza zahtjeva

Do sada smo se usredotočili na jedan HTTP zahtjev. Sada, da vidimo što možemo učiniti s više zahtjeva. Povezujući niz zahtjeva, možemo simulirati i testirati tijek rada klijent-poslužitelj.

U ovom odjeljku primijenimo ono što smo naučili kako bismo stvorili slijed zahtjeva. Točnije, dodat ćemo još tri zahtjeva za izvršenje nakon POST zahtjeva koji smo već kreirali. To će biti GET, DELETE i na kraju još jedan GET.

7.1. Hvatanje vrijednosti odgovora u varijablama

Prije nego što stvorimo nove zahtjeve, napravimo izmjenu našeg postojećeg zahtjeva POST. Jer ne znamo koji će id poslužitelj dodijeliti svakom foo primjerice, možemo koristiti varijablu za hvatanje id-a koji je vratio poslužitelj.

Da bismo uhvatili taj ID, na kraj testne skripte POST zahtjeva dodati ćemo još jedan redak:

pm.variables.set ("id", pm.response.json (). id);

The pm.variables.set () funkcija uzima vrijednost i dodjeljuje je privremenoj varijabli. U ovom slučaju izrađujemo iskaznica varijabla za pohranu vrijednosti id našeg objekta. Jednom postavljena, toj ćemo varijabli moći pristupiti u kasnijim zahtjevima.

7.2. Dodavanje GET zahtjeva

Sada, koristeći tehnike iz prethodnih odjeljaka, dodamo GET zahtjev nakon zahtjeva POST.

Ovim GET zahtjevom dobit ćemo isti foo instancu koju je stvorio zahtjev POST. Nazovimo ovaj GET zahtjev kao „dobiti foo“.

URL zahtjeva GET je:

// localhost: 8082 / spring-boot-rest / auth / foos / {{id}}

U ovom URL-u referenciramo iskaznica varijabla koju smo prethodno postavili tijekom zahtjeva POST. Stoga bi GET zahtjev trebao dohvatiti istu instancu koju je stvorio POST.

Kad se pojave izvan skripti, na varijable se upućuje pomoću sintakse dvostrukih zagrada {{iskaznica}}.

Budući da nema tijela za GET zahtjev, prijeđimo izravno na Ispitivanja tab. Budući da su testovi slični, možemo kopirati testove iz zahtjeva POST, a zatim napraviti nekoliko izmjena.

Prvo, ne trebamo postavljati iskaznica opet varijabla, pa nemojmo kopirati taj redak.

Kao drugo, znamo koji id možemo očekivati ​​ovaj put, pa provjerimo ga. Možemo koristiti iskaznica varijabla za to:

pm.test ("status uspjeha", () => pm.response.to.be.success); pm.test ("naziv je točan", () => pm.expect (pm.response.json (). name) .to.equal ("Transformatori")); pm.test ("id je točan", () => pm.expect (pm.response.json (). id) .to.equal (pm.variables.get ("id")));

Budući da sintaksa dvostrukih zagrada nije valjan JavaScript, koristimo pm.variables.get () funkcija za pristup iskaznica varijabilna.

Na kraju, spremimo promjene kao i prije.

7.3. Dodavanje IZBRIŠI zahtjeva

Dalje ćemo dodati zahtjev IZBRIŠI koji će ukloniti foo objekt s poslužitelja.

Nastavit ćemo dodavanjem novog zahtjeva nakon GET-a i postavljanjem njegove metode na DELETE. Ovaj zahtjev možemo imenovati “izbriši foo“.

URL brisanja identičan je URL-u GET:

// localhost: 8082 / spring-boot-rest / auth / foos / {{id}}

Odgovor neće imati tijelo za testiranje, ali možemo testirati kod odgovora. Stoga će zahtjev DELETE imati samo jedan test:

pm.test ("status uspjeha", () => pm.response.to.be.success);

7.4. Provjera brisanja

Na kraju, dodajmo još jednu kopiju zahtjeva GET kako bismo provjerili je li DELETE stvarno radio. Ovaj put, duplicirajmo svoj prvi GET zahtjev umjesto da ga kreiramo od nule.

Da bismo kopirali zahtjev, desnom tipkom miša kliknite zahtjev da bi se prikazao padajući izbornik. Zatim odabiremo Duplikat.

Dvostruki zahtjev imat će riječ Kopirati u prilogu njegovog imena. Preimenujmo ga u “potvrdi brisanje”Kako bi se izbjegla zabuna. The Preimenovati opcija je dostupna desnim klikom na zahtjev.

Po zadanom se duplicirani zahtjev pojavljuje odmah nakon izvornog zahtjeva. Kao rezultat toga, morat ćemo ga povući ispod zahtjeva IZBRIŠI.

Posljednji korak je izmjena testova. Međutim, prije nego što to učinimo, iskoristimo priliku da vidimo neuspjeli test.

Kopirali smo zahtjev GET i premjestili ga nakon DELETE, ali još nismo ažurirali testove. Budući da je zahtjev DELETE trebao izbrisati objekt, testovi ne bi trebali uspjeti.

Svakako spremimo sve svoje zahtjeve, a zatim pritisnite Pokušaj ponovo u trkaču kolekcije. Očekivano, naši testovi nisu uspjeli:

Sad kad je naš kratki zaobilazak završen, popravimo testove.

Pregledom neuspjelih testova možemo vidjeti da poslužitelj odgovara sa statusom 500. Stoga ćemo promijeniti status u našem testu.

Nadalje, pregledom neuspjelog odgovora u Konzola poštara, saznajemo da odgovor uključuje a uzrok imovine. Štoviše, uzrok svojstvo sadrži niz “Nije prisutna vrijednost“. Možemo testirati i za to:

pm.test ("status je 500", () => pm.response.to.have.status (500)); pm.test ("nema vrijednosti prisutne", () => pm.expect (pm.response.json (). uzrok) .to.equal ("Nije prisutna vrijednost"));

7.5. Pokretanje cijele kolekcije

Sad kad smo dodali sve zahtjeve, pokrenimo kompletnu kolekciju u pokretaču kolekcije:

Ako je sve išlo prema planu, trebali bismo imati devet uspješnih testova.

8. Izvoz i uvoz kolekcije

Iako Poštar naše kolekcije pohranjuje na privatnom, lokalnom mjestu, možda ćemo htjeti podijeliti kolekciju. Da bismo to učinili, zbirku izvozimo u JSON datoteku.

The Izvoz naredba je dostupna u izborniku elipsa kolekcije. Kad se zatraži verzija datoteke JSON, odaberite najnoviju preporučenu verziju.

Nakon što odaberemo verziju datoteke, poštar će zatražiti naziv datoteke i mjesto za izvezenu zbirku. Na primjer, možemo odabrati mapu unutar našeg GitHub projekta.

Za uvoz prethodno izvezene kolekcije koristimo Uvoz dugme. Možemo ga pronaći na alatnoj traci glavnog prozora poštara. Kad poštar zatraži mjesto datoteke, možemo doći do JSON datoteke koju želimo uvesti.

Vrijedno je napomenuti da Poštar ne prati izvezene datoteke. Kao rezultat toga, poštar ne prikazuje vanjske promjene dok ponovno ne uvozimo kolekciju.

9. Zaključak

U ovom smo članku koristili Poštara za izradu poluautomatiziranih testova za REST API. Iako ovaj članak služi kao uvod u osnovne značajke Poštara, jedva smo ogrebali površinu njegovih mogućnosti. Mrežna dokumentacija Poštara dragocjen je resurs za dublje istraživanje.

Zbirka kreirana u ovom vodiču dostupna je na GitHubu.


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