advanced scripting complex testing workflows postman
Lær mere om Postman Advanced Scripting til komplekse test-arbejdsgange:
I denne vejledning vil vi se nogle grundlæggende eksempler på brug af avanceret scripting med Postman, som gør det muligt for os at køre komplekse test-arbejdsgange.
Vi vil diskutere eksempler som videregivelse af data fra en anmodning til en anden, anmodningskædning, dvs. kontrol af udførelsesrækkefølgen for anmodningerne i Postman-samlingen osv.
software test interview spørgsmål med svar
=> Læs gennem Easy Postman Training Series.
Hvad du vil lære:
- Videregivelse af data mellem anmodninger i postbud
- Anmodning om lænkning i postbud
- Avanceret arbejdsflowkædning med postbud
- Vigtige tip
- Konklusion
- Anbefalet læsning
Videregivelse af data mellem anmodninger i postbud
At videregive data mellem anmodninger er en udvidelse af brugen af forskellige typer Postman-variabler. Det er ikke meget ualmindeligt, hvor en API-anmodning afhænger af data fra den tidligere anmodnings svar.
For at opbygge en sådan form for funktioner ved hjælp af Postman kan vi simpelthen bruge Postman-variabler til at indstille værdien afhængigt af svaret, der blev modtaget fra de foregående eller tidligere anmodninger.
Her er en videotutorial:
Lad os se på et eksempel for at illustrere dette.
Vi bruger den samme API https://reqres.in med sine 2 slutpunkter, dvs. registrer bruger og få brugeroplysninger.
Vi bruger værdien af bruger-id'et, der returneres fra det registrerende slutpunkt, og bruger det til at få metoden med brugeroplysninger. Dette opnås ved at gemme userId-værdien i en miljøvariabel og bruge den miljøvariabel i den efterfølgende anmodning.
Bemærk, at alle sådanne scripts vil være en del af fanen 'Tests' i Postman-anmodningskonstruktionen.
Lad os se, hvordan scriptet vil se ud:
# 1) For Register-brugerendepunkt vil svaret fra denne API se ud som vist nedenfor.
{ 'id': 4, 'token': 'QpwL5tke4Pnpja7X4' }
For at udføre GET-anmodningen ved hjælp af bruger-id'et fra svaret skal vi nu få id-værdien fra ovenstående svar. Vi bruger nedenstående script til at gemme værdien af id'et fra denne JSON i en navngivet miljøvariabel bruger ID.
var jsonData = pm.response.json(); pm.environment.set('userId',jsonData.id)
Med ovenstående script gemmes værdien af ID'et nu i userId-miljøvariablen, og det samme kan bruges under udførelse af GET-brugeranmodningens slutpunkt.
#to) Således vil GET-brugeranmodningen se ud som vist nedenfor.
https://reqres.in/api/users/{(userId}}
Når den første anmodning er udført, henter den værdien af UserID fra svaret og opdaterer værdien af miljøvariablen, så den kunne bruges i de andre anmodninger.
Anmodning om lænkning i postbud
Lad os først prøve at forstå et grundlæggende brugstilfælde af Request chaining, og derefter vil vi gå nærmere ind på, hvordan vi kan opnå Request chaining ved hjælp af Postman.
Overvej et scenarie af loginflowet på et e-handelswebsted, og valider den indloggede bruger. Nu for at en bruger skal logge ind, skal han eller hun først være registreret på webstedet, og først derefter vil de være i stand til at logge ind. Det er den rækkefølge, hvor mobilappens faktiske websted udfører API-opkald.
Se på det fra et integrationstestperspektiv. For en API-test skal vi først:
- Ring til API'ets registreringsendepunkt, så brugeren kan registrere.
- Ring derefter til login-slutpunktet, og valider detaljerne for den indloggede bruger.
Med Postman er det ikke ligefrem at kontrollere rækkefølgen af anmodningen. Standardudførelsesordren er fra top til bund, dvs. den rækkefølge, som anmodninger deklareres eller oprettes i Postman-samlingen.
Anmodningskædning eller rækkefølgen af anmodningens udførelse ændres ved hjælp af følgende script:
postman.setNextRequest({{RequestName}});
Det er vigtigt at bemærke her, at dette Request chaining-script skal føjes til scriptet til pre-anmodning eller script efter post-anmodning (eller testfanen i Postman-anmodningsbyggeren), der udløser workflowet, når anmodningen under udførelse er afsluttet.
Her er {{RequestName}} det faktiske anmodningsnavn, der er konfigureret eller angivet i Postman-samlingen.
Lad os konfigurere en postbudssamling med 4 forskellige anmodninger for at illustrere konceptet Request chaining. Opret en ny samling med 4 anmodninger (Vi bruger den samme API https://reqres.in for at illustrere dette).
De 4 anmodninger i samlingen vil være som nedenfor:
# 1) POST anmodning om at registrere brugeren ( https://reqres.in/api/register ) med JSON-eksempel med felter med e-mail og adgangskode som nedenfor.
hvordan man laver din egen firewall
{ 'email': 'eve.holt@reqres.in', 'password': 'pistol' }
#to) POST-anmodning med login-slutpunkt ( https://reqres.in/api/login ) med samme anmodningsorgan som ovenfor.
# 3) FÅ anmodning med brugerID 4.
Den arbejdsgang, som vi vil forsøge at opnå, er:
Registrer (POST) -> Brugeroplysninger (GET) -> Login (POST)
Uanset hvordan disse anmodninger er konfigureret, opretter vi en arbejdsgang for at få dem udført i denne rækkefølge.
Bemærk, at anmodningerne er navngivet som henholdsvis Register User, Get User og Login User. Det er vigtigt at have disse anmodningsnavne nøjagtigt og korrekt specificeret i scriptet, ellers sidder workflowet fast.
Lad os se, hvordan manuskripterne ser ud nu.
# 1) POST anmodning om registrering.
postman.setNextRequest('Login User');
#to) POST-anmodning om at logge ind.
postman.setNextRequest('Get User');
# 3) FÅ anmodning om at få brugeroplysninger. Det er vigtigt her, at vi ikke ønsker, at der skal ske noget efter denne anmodning. Hvis vi ikke tilføjer noget workflow-script her, er Postman-samlingen designet til at genoptage den næste anmodning i den logiske eller standardrækkefølge.
Antag således, at den oprindelige rækkefølge af anmodninger i samlingen er Registrer, hent bruger og Log på og vores arbejdsgang er ved Få bruger da kontrollen ikke ved, hvilken anmodning der skal gå næste, vil den gå til den næste logiske anmodning, der er Log på og vil i sidste ende resultere i en uendelig løkke.
For at forhindre en sådan situation er det nyttigt at afslutte arbejdsgangen ved hjælp af,
postman.setNextRequest(null)
Hver gang ovennævnte script er stødt på under en samlingskørsel, stopper workflowkørslen, og samlingskøberen afsluttes.
I de tilfælde, hvor der er cirkulære referencer til den næste anmodning, vil samlingsløberen sidde fast i en uendelig løkke og derved forårsage en hukommelseslækage før eller senere.
Bemærk, at for at udføre workflowet skal du udføre den første eller startanmodning manuelt. Send det, det følger workflowet som defineret i scripts efter anmodning.
Med andre ord, den første anmodning, der skal køres som en del af arbejdsgangen, skal også være den første anmodning i samlings- eller samlingsmappen, så arbejdsprocesudførelsen starter med den første anmodning, som også er den første anmodning fra arbejdsgangen .
Avanceret arbejdsflowkædning med postbud
Ovenstående eksempel, som vi diskuterede, er mere en lineær arbejdsgang, hvor vi lige har konfigureret arbejdsgangen mellem et sæt anmodninger i den samme samling. Den samme teknik kan også bruges til looping af en anmodning flere gange baseret på nogle svarværdier eller miljøvariabler.
Overvej integrationstest til en indkøbskurv-app, hvor du skal teste for et scenarie, hvor en bruger søger efter et produkt og tilføjer det til indkøbskurven og skal udføre den samme handling 5 gange, dvs. indtil vognen har i alt 5 varer og derefter endelig kassen.
Så hvis du skulle skrive en lineær strøm til denne type test, ville du have gentaget individuelle anmodninger i samlingen, og i det væsentlige ville samlingen have 5 anmodninger om at søge på en vare og 5 anmodninger om at tilføje produkter til indkøbskurven og 1 anmodning om kassen.
Med denne arbejdsgangsfunktionalitet kan vi undgå at gentage de samme anmodninger i samlingen og bruge arbejdsgange til at løbe mellem anmodningerne.
Lad os se en strømningssekvens for et sådant scenario (så kan dette bruges / oprettes ved hjælp af Postman-workflow sammen med en kombination af miljøvariabler).
Der er også et interessant eksempel på at bruge Postman-workflow til at oprette en Spotify-afspilningsliste. Henvise her for mere information.
Vigtige tip
Nedenfor er nogle vigtige tip, du skal huske, mens du arbejder på at opbygge arbejdsgange.
- Mens der køres en samling, hvis få anmodninger ikke har postment.setNextRequest, indstilles, fortsætter udførelsen i standardrækkefølgen for indsamling. Således anbefales det generelt at have Postman.setNextRequest i enten alle anmodninger eller i ingen af dem.
- Når der køres med samlinger, hvis der er mapper i en samling, kan Postman.setNextRequest kun bruges til anmodninger, der tilhører den samme mappe, dvs. valg af anmodning kan ikke gå ud over den aktuelle mappe.
- Postman.setNextRequest er den sidste erklæring, der bliver udført i scriptet efter anmodning eller pre-anmodning, uanset hvor og hvilken rækkefølge det er nævnt.
I tilfælde af flere værdier fundet for setNextRequest, er den, der er nævnt i sidstnævnte effektiv.
Konklusion
I denne vejledning dækkede vi få avancerede scriptingemner som at kombinere miljø og lokale variabler for at videregive data mellem forskellige anmodninger i Postbogen, og hvordan kan vi styre udførelsesrækkefølgen af anmodningerne ved hjælp af Postman Request-kæde, der muliggør avancerede funktioner som looping og forgrening.
Det er en sej funktion til at efterligne en applikations opførsel på den måde, som den ville interagere med forskellige API'er, og det er nyttigt at skrive arbejdsgange fra ende til slut ved hjælp af integrationstest med API-slutpunkter.
=> Tjek den perfekte postbudsuddannelsesguide her.
Anbefalet læsning
- Bedste softwaretestværktøjer 2021 (QA Test Automation Tools)
- Test af Primer eBook Download
- POSTMAN Tutorial: API-test ved hjælp af POSTMAN
- Test af webtjenester præstation ved hjælp af LoadRunner VuGen Scripting
- Hvordan bruges postbud til test af forskellige API-formater?
- Load Testing med HP LoadRunner-vejledninger
- Forskel mellem Desktop, Client Server Testing og Web Testing
- Er du en ny eller avanceret tester? Find fra dette kortspil