wiremock tutorial introduction wiremock
Ta uvodni video vadnik bo razložil značilnosti Wiremocka in kako zagnati Wiremock kot samostojni strežnik in kot del preskusov JUnit:
V tej vadnici bomo zajeli osnovne koncepte in podrobnosti o orodju Wiremock. Lahko se uporablja kot samostojni strežnik HTTP kot tudi v preskusih JUnit v skladu z zahtevami.
To je zelo uporabljeno orodje, saj je odprtokodno in ima veliko skupnost sodelavcev. Spada v kategorijo orodij za virtualizacijo storitev.
Kaj se boste naučili:
Kaj je Wiremock?
Preprosto povedano, Wiremock je posmehljiva nastavitev za integracijske teste. To je preprosto lažni strežnik, ki je zelo nastavljiv za vrnitev pričakovanega odgovora na dano zahtevo.
Pogosto se uporablja med razvojem in še pomembneje med testiranjem integracije, medtem ko sistem ali storitev govori z eno ali več zunanjimi ali notranjimi odvisnostmi / storitvami.
Poskusimo razumeti več o integracijskem testiranju na splošno in spoznajmo, kako lahko Wiremock pomaga rešiti te izzive in nam olajša življenje.
Na splošno, ko pride beseda integracija, nas prizadene integracija med dvema komunikacijskima sistemoma. Zdaj pa poglejmo z vidika preizkušene aplikacije, ki za opravljanje dela uporablja neko zunanjo storitev.
Na primer, domnevamo, da ustvarjamo aplikacijo za spletni sistem potovanj ali sistem izdajanja vozovnic in imamo modul za preverjanje stanja PNR, ki zadene zunanji API, ki ga zagotavljajo indijske železnice.
Kako lahko zdaj z integracijo preizkusimo svojo aplikacijo z zunanjimi API-ji?
To lahko storite na dva načina:
- Najprej, je pristop preskusa enote, pri katerem vklopite vmesnik, ki je na voljo (ali ustvarjen v lastni režiji), tako da naš sistem preizkusi / potrdi ogrožen ali ponarejen odziv, še preden zadene zunanji API. To ni nič drugega kot preskus enote, ki poskuša zasmehovati zunanjo odvisnost.
- Drugič je testiranje zunanjih odvisnosti z nekim testnim okoljem (ali dejanskim proizvodnim okoljem). Vendar ima takšen pristop več izzivov, omenjenih spodaj:
- Zunanji sistemi API morda niso vedno na voljo. torej smo močno odvisni ali odvisni od zunanjih sistemov in morebitni izpad bo vplival na naše teste in posredno na postopek razvoja / izdaje.
- Drugič, zunanji API-ji imajo lahko testno okolje ali pa tudi ne. Na primer, API za preverjanje stanja PNR lahko vedno zahteva dejanske številke PNR za pridobivanje in vrnitev odzivov.
- Velikokrat pride do vtičenja API-ja. Na primer, domnevamo, da API za preverjanje PNR zaračuna 100 Rs za vsakih 1000 zahtev. Ker se integracijski testi običajno izvajajo med vsako regresijo (in največkrat z vsako odobritvijo), morda ne bi bila stroškovno učinkovita rešitev, če bi zadeli tak API, ki nas stane celo za namene testiranja.
- Zunanjega API-ja ni mogoče konfigurirati za vrnitev želenega odziva. Tudi če je mogoče, boste morali ustvariti veliko testnih podatkov, da zagotovite različne odzive za različne vnose zahtev.
Na primer, želite preizkusiti scenarije napak, na primer API vrača različne kode stanja za različne vrste podatkov. Ker zdaj odziv ni pod našim nadzorom, bomo morali ustvariti več naborov podatkov za potrditev različnih možnih scenarijev ali izidov.
Razumimo te koncepte s pomočjo spodnjega diagrama.
Tu primerjamo oba pristopa testiranja integracije, torej brez lažnega strežnika, ki uporablja dejansko izvedbo zunanje odvisnosti, in z lažnim strežnikom (Wiremock), ki posmehuje odzive na prejete zahteve za odvisnost.
V slednjem primeru močno zmanjša odvisnost in odvisnost od dejanskega izvajanja odvisnosti ter nudi veliko konfiguracijskih zmožnosti, ne da bi pri tem ogrožal kakovost in roke dostave.
Kako se Wiremock odzove na določeno zahtevo?
Kot vemo, je Wiremock programski Mock strežnik, zato se na določeno zahtevo odzove tako, da v mapo, imenovano »preslikave«, shrani vsa ustrezna preslikavanja (ali posmehljive odzive).
Obstaja ujemajoča se komponenta Wiremock, ki ujema zahteve s shranjenimi preslikavami in če se vrne uspešno ujemanje, se vrne prvo takšno ujemanje kot odgovor na dano zahtevo.
Če uporabljate samostojno različico Wiremock, boste po zagonu strežnika Wiremock videli mapo preslikav, ki bo ustvarjena v imeniku lokacije Wiremock install / jar.
Video vadnica: Uvod v orodje Wiremock
razlika v c in c ++
Kako uporabljati Wiremock?
Zdaj pa poglejmo, kako lahko to orodje uporabimo z našimi integracijskimi testi.
Uporablja se lahko na naslednje načine.
Samostojni strežnik Wiremock
Kot samostojni strežnik lahko preprosto ustvarite preprosto aplikacijo Java z odvisnostjo Maven / Gradle za Wiremock in jo ohranite kot delujoč postopek.
To je dobra alternativa, če želite gostiti svoj samostojni strežnik na nekem računalniku in ga uporabiti kot en posmehljiv strežnik za celoten projekt ali skupino. V samostojnem načinu se to orodje lahko izvede tudi s prenosom samostojnega kozarca, ki je na voljo tukaj in preprosto zaženite kozarec.
Na primer, predpostavimo, da želite namestiti svoj samostojni primerek Wiremock na neki strežnik v oblaku ali na lokalnem strežniku, potem lahko preprosto zaženete ta kozarec in uporabite sistemski IP, da ga uporabite kot gostujočo storitev.
Poglejmo nekaj koraki za zagon v samostojnem načinu (in konfiguriranje različnih stvari, kot so vrata, preslikava map itd.)
# 1) Zaženite kozarec Wiremock iz terminala (ali ukaznega poziva za uporabnike sistema Windows) kot katero koli drugo datoteko JAR (iz imenika za namestitev kozarca Wiremock).
java -jar wiremock-standalone-2.25.1.jar
#two) Privzeto se Wiremock izvaja na localhost: 8080 (če so vrata brezplačna za uporabo, bo zgornji ukaz zagnal strežnik Wiremock v samostojnem načinu) in izpis bo prikazan spodaj.
# 3) Zdaj, ko se strežnik zažene, lahko obiščete kateri koli URL na localhost: 8080
Na primer, http: // localhost: 8080 / get / user / 1 - Ker trenutno ni nastavljenih posmehov, boste prejeli odgovor, kot je prikazano spodaj.
# 4) Zdaj poskusimo za ta URL nastaviti preprost prevara / posnetek in poskusimo znova vrniti URL nazaj. Nato bomo potrdili, da zadevanje istega URL-ja zdaj vrne posmehljivi ali zakrknjeni odgovor.
curl -X POST --data '{ 'request': { 'url': '/get/user/1', 'method': 'GET' }, 'response': { 'status': 200, 'body': 'Here it is!
' }}' http://localhost:8080/__admin/mappings/new
Najprej poskusimo razumeti to zahtevo CURL:
- Izvajamo zahtevo CURL POST za http: // localhost: 8080 / __ admin / mappings / new - Zdaj je to mesto, kjer bodo vsa preslikavanja shranjena za strežnik Wiremock, ki smo ga izvedli / zagnali prek datoteke JAR.
- V zahtevi Curl definiramo parametre zahteve, kot sta - URL in metoda zahteve, skupaj z odzivnim telesom v razdelku »response«. To preprosto pomeni, da vsakič, ko pride zahteva GET z URL / get / user / 1, nato odgovorite z navedenim telesom odziva.
# 5) Ko je nastavljen ostrejši odziv (s pomočjo zgornje zahteve za kodranje), lahko poskusimo pritisniti URL in preveriti, ali dobimo nazaj oškodovan odgovor iz Wiremocka.
Poskusimo v brskalniku pritisniti ta URL - http: // localhost: 8080 / get / user / 1
Če je bilo preslikavanje uspešno nastavljeno, morate dobiti odgovor, kot je prikazano spodaj:
Skupaj s preskusi JUnit kot konfiguracija pravila JUnit
Strežnik Wiremock se lahko uporablja s preskusi JUnit kot nastavitev pravila JUnit. S tem JUnit skrbi za življenjski cikel Wiremocka, tj. Wiremock se zažene in ustavi.
najboljši youtube pretvori v mp3 aplikacijo
Uporablja se večinoma v nastavitvah, kjer bi radi zagnali in ustavili strežnik po vsakem preizkusu.
To ima svoje prednosti izoliranosti in ima visoko stopnjo prilagodljivosti v nasprotju s samostojno nastavitvijo, pri kateri lahko več ljudi na koncu uporablja isti strežnik in stopi čez prefinjene odzive drugih.
Poglejmo delovni primer tega pristopa:
# 1) Ustvarite pravilo JUnit za strežnik Wiremock. Ta korak je v bistvu kot korak nastavitve testa, kjer govorcu JUnit sporočamo, naj pred vsakim testom ustvari strežnik Wiremock in ga po vsakem preizkusu ustavi.
To tudi pomeni, da bo JUnit runner poskrbel za zagon in zaustavitev strežnika Wiremock, ne da bi to izrecno storil.
@Rule public WireMockRule wm = new WireMockRule(wireMockConfig().port(8080));
#two) Zdaj bomo napisali test, kjer bomo najprej ustvarili odjemalca (z uporabo okHttp) za izvajanje zahtev glede na želeno končno točko.
// execute request through http client OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url('http://localhost:8080/test/abc') .get() .build();
# 3) Tu pa lahko opazite, da še vedno nismo nastavili nobenega klica, ki bi ga bilo treba vrniti za naš primer Wiremock. to pomeni, da bo zgornji odjemalec zahteval URL http: // localhost: 8080 / test / abc, ki nima konfiguriranega klica. V tem primeru bo strežnik Wiremock vrnil 404 nobene vsebine.
# 4) Da bi za zgornji URL za primer strežnika Wiremock nastavili škrbino, bomo morali poklicati statične metode škrbine Wiremock, kot je prikazano spodaj.
private void configureStubs() { configureFor('localhost', 8080); stubFor(get(urlEqualTo('/test/abc')) .willReturn(aResponse().withBody('Test success!'))); }
Tu lahko vidite, da smo uporabili nekaj statičnih metod, kot so configureFor, stubFor itd. Vse te metode so del knjižnice Wiremock Java. (Te metode bomo podrobno preučili v naslednjih vajah / oddelkih)
# 5) Zdaj po končanem koraku konfiguracije lahko preprosto izvedemo zahtevo prek odjemalca in potrdimo odgovor (odvisno od tega, kaj je nastavljeno za vrnitev škrbine prek Wiremock)
Če povzamemo, tukaj je videti celoten vzorec kode:
public class WiremockJunitTest { @Rule public WireMockRule wm = new WireMockRule(wireMockConfig().port(8080)); @Test public void assertWiremockSetup() throws IOException { // Arrange - setup wiremock stubs configureStubs(); // execute request through the http client OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url('http://localhost:8080/test/abc') .get() .build(); // Act - call the endpoint Response response = client.newCall(request).execute(); // Assert - verify the response assertEquals('Test success!', response.body().string()); verify(exactly(1),getRequestedFor(urlEqualTo('/test/abc'))); } // configure stubs for wiremock private void configureStubs() { configureFor('localhost', 8080); stubFor(get(urlEqualTo('/test/abc')) .willReturn(aResponse().withBody('Test success!'))); } }
Potrebne odvisnosti
Na voljo je kot:
- Samostojni JAR, ki vsebuje samo odvisnost Wiremock.
- Kozarec maščobe, ki vsebuje Wiremock in vse njegove odvisnosti.
Oba okusa sta na voljo kot odvisnosti Gradle in Maven. Več podrobnosti je na voljo v uradnem skladišču Maven tukaj
Video vadnica: Wiremock s preskusom JUnit
Zaključek
V tej vadnici smo si ogledali osnovne značilnosti Wiremock-a in videli, kako ga je mogoče zagnati kot samostojni strežnik in kot del preskusov JUnit s pomočjo pravil JUnit.
Na kratko smo se dotaknili tudi trnjanja in jo bomo podrobneje obravnavali v naslednji vadnici.
NASLEDNJA Vadnica
Priporočeno branje
- Uvod v Micro Focus LoadRunner - Testiranje obremenitve z vadnico # 1 za LoadRunner
- Vadnica za Ngrok: Kratek uvod z namestitvijo in namestitvijo
- Vadnica za TestNG: Uvod v ogrodje TestNG
- Uvod v Selenium WebDriver - Vadnica za selenij št. 8
- Uvod v programski jezik Java - Video vadnica
- Uvod in postopek namestitve Pythona
- Kaj je Unix: kratek uvod v Unix
- Vadnica za Neoload: Uvod v Neoload, prenos in namestitev