
Hej alla. Vi börjar lÄngsamt komma fram i ljuset och fortsÀtter vÄr serie av artiklar om vÄr produkt. Efter översiktsartikeln fick vi mÄnga Äterkopplingar (övervÀgande positiva), förslag och buggrapporter. Idag kommer vi att visa det i praktiken och ni kommer att kunna utvÀrdera nÄgra funktioner i vÄr applikation. För en mer komplett upplevelse rekommenderar jag att ni besöker vÄr dokumentation pÄ adressen . SÄ, lÄt oss börja!
Installation
Vi börjar med det uppenbara. Applikationen Ă€r tillgĂ€nglig och kan verkligen testas pĂ„ tre plattformar â Linux, Windows, MacOS. Ni kan ladda ner installationsprogrammet för den intressanta OS frĂ„n . För Linux-anvĂ€ndare finns det möjlighet att installera . Vi hoppas verkligen att vi snart ocksĂ„ fĂ„r till Microsoft Store och App Store (behövs det? Vad tycker ni?).
Testscenariot
Vi har valt följande standardscenario som testobjekt:
- logga in: anvĂ€ndare â admin, lösenord â password
- lÀgga till en ny post
- kontrollera korrektheten i tillÀggningen av posten
Vi kommer att testa pÄ . Det Àr en vanlig , som passar perfekt för att testa sÄdana applikationer. Vi har bara lagt till tokenbaserad autentisering pÄ alla rutter av json-server och skapat en login-metod för att fÄ den nÀmnda token. Vi kommer att gÄ framÄt steg för steg och gradvis förbÀttra vÄrt projekt.
Skapande av projekt och försök att skapa en entitet utan autentisering
Först skapar vi ett nytt projekt (Arkiv->Nytt projekt). Om ni kör applikationen för första gÄngen öppnas ett nytt projekt automatiskt. Vi börjar med att försöka göra en begÀran om att skapa en ny post (kanske skapandet av poster Àr tillgÀngligt utan autentisering). VÀlj i kontextmenyn Project noden som heter LÀgg till nod -> BegÀranSteg. Ange följande namn för noden: create-post. Resultatet blir att en ny nod skapas i trÀdet och fliken för denna nod öppnas. StÀll in följande parameterar för begÀran:
- Typ av begÀran: POST
- url:
- BegÀrans kropp: json med vÀrdet
{"title": "New testmace quick start post"}
Om ni har gjort allt rÀtt kommer grÀnssnittet att se ut som följande:

Men om vi försöker genomföra begÀran kommer servern att returnera kod 401 och utan autentisering Àr ingenting möjligt pÄ denna server. Ja, det Àr helt förvÀntat).
LÀgg till begÀran för autentisering
Som redan nÀmnts har vi en POST endpoint /login, som tar emot json av följande typ som begÀrans kropp: {"username": "", "password": ""}, dÀr username och password (Äterigen, frÄn den inledande ovan) har betydelse admin och password dÀrmed. I svaret returnerar denna endpoint json av typen {"token": ""}. Vi kommer att anvÀnda det för autentisering. LÄt oss skapa BegÀranSteg en nod med namnet login, dÀr förÀldern kommer att vara Projekt noden. Med hjÀlp av drag-and-drop flyttar du denna nod i trÀdet högre Àn noden create-post. Vi kommer att stÀlla in följande parametrar för den nyligen skapade förfrÄgan:
- Typ av begÀran: POST
- url:
- BegÀrans kropp: json med vÀrdet
{"username": "admin", "password": "password"}
Vi utför förfrÄgan och fÄr en tvÄhundrad elva kod med token i svaret. SÄ hÀr:

Refaktorering: tar bort domÀnerna
Tills dess Àr förfrÄgningarna inte kopplade i ett enda scenario. Men det Àr inte den enda bristen. Om du tittar noga kan du mÀrka att Ätminstone domÀnen dupliceras i bÄda förfrÄgningarna. Inte bra. Det Àr dags att refaktorera denna del av det framtida scenariot och variabler kommer att hjÀlpa oss med detta.
I första hand utför variabler samma roll som i andra liknande verktyg och programmeringssprĂ„k â eliminera duplicering, öka lĂ€sbarheten, osv. Mer om variabler kan lĂ€sas i . I detta fall kommer vi att behöva anvĂ€ndardefinierade variabler.
Definiera en variabel pÄ projektets nivÄ domain med vÀrdet https://testmace-quick-start.herokuapp.com. För detta behöver du
- öppna fliken för denna nod och klicka pÄ kalkylatorikonen till höger uppe
- klicka pÄ + ADD VARIABLE
- ange namn och vÀrde för variabeln
I vÄrt fall kommer dialogen med den tillagda variabeln att se ut som följer:

OK. Nu kan vi, tack vare arv, anvÀnda denna variabel i avkommor pÄ vilken nivÄ av inbÀddning som helst. I vÄrt fall Àr det noder login och create-post. För att anvÀnda variabeln i textrutan mÄste du skriva ${}. Till exempel, url för inloggning omvandlas till ${domain}/login, och för create-post noden kommer url att se ut som ${domain}/posts.
SÄledes, med principen DRY i Ätanke, har vi nÄgot förbÀttrat scenariot.
Spara token i en variabel
Eftersom vi pratar om variabler, lĂ„t oss utveckla detta Ă€mne nĂ„got. Just nu fĂ„r vi vid en lyckad inloggning en autentiseringstoken frĂ„n servern, som vi kommer att behöva i efterföljande förfrĂ„gningar. LĂ„t oss spara denna token i en variabel. Eftersom vĂ€rdet pĂ„ variabeln kommer att definieras under körning av scenariot, anvĂ€nder vi en speciell mekanism â .
För att börja, lĂ„t oss göra en inloggningsbegĂ€ran. I fliken Parsed svaret, hovra med muspekaren över token och vĂ€lj punkten i kontextmenyn (som anropas antingen med höger musknapp eller genom att trycka pĂ„ knappen âŠ) Tilldela till variabel. En dialogruta kommer att dyka upp med följande fĂ€lt:
- Path â vilken del av svaret som tas (i vĂ„rt fall Ă€r det
body.token) - Aktuellt vĂ€rde â vilket vĂ€rde som finns pĂ„ sökvĂ€gen Path (i vĂ„rt fall Ă€r detta token-vĂ€rdet)
- Variabelnamn â namnet pĂ„ variabeln dĂ€r Aktuellt vĂ€rde det kommer att sparas. I vĂ„rt fall blir det
token - Node â i vilken av förfĂ€derna variabeln kommer att skapas Variabelnamn. LĂ„t oss vĂ€lja Projekt
Fyllt dialog ser ut som följer:

Nu, vid varje körning av noden, login kommer den dynamiska variabeln token att uppdateras med det nya vÀrdet frÄn svaret. Och denna variabel kommer att lagras i Projekt noden och tack vare Àrvandet vara tillgÀnglig för efterkommande.
För att referera till dynamiska variabler mÄste man anvÀnda $dynamicVar. Till exempel, för att nÄ det sparade tokenet bör du aktivera ${$dynamicVar.token}.
Vi skickar autentiseringstoken i begÀrningar
I tidigare steg fick vi autentiseringstoken och allt vi behöver göra Àr att lÀgga till en rubrik Authorization med vÀrdet Bearer i alla begÀrningar som krÀver autentisering, inklusive i create-post. Det finns flera sÀtt att göra detta:
- Manuellt kopiera token och lÀgga till autentiseringrubriken i intressanta begÀrningar. Denna metod fungerar, men dess anvÀndning Àr begrÀnsad till begÀrningar av typen "gjord och kastad". För flera körningar av scenarier Àr den inte lÀmplig.
- AnvÀnda funktionaliteten för .
- AnvÀnd
AnvÀndningen av den andra metoden verkar uppenbar, men i kontexten av denna artikel Àr en sÄdan ansats⊠ointressant. Egentligen: autentiseringsmekanismen Àr mer eller mindre bekant för er frÄn andra verktyg (Àven om vi har saker som ) och kommer sannolikt inte att vÀcka nÄgra frÄgor.
En annan historia Àr standardrubriker! Kort sagt Àr standardrubrikerna de som Àrvs frÄn HTTP-rubrikerna och som lÀggs till begÀran som standard om de inte uttryckligen stÀngs av. Med denna funktionalitet kan man till exempel implementera anpassad autentisering eller helt enkelt bli av med dubbletter i scenarier. Vi tillÀmpar denna funktion för att skicka en token i rubrikerna.
Tidigare har vi förutseende sparat token i en dynamisk variabel $dynamicVar.token pĂ„ nivĂ„n av Project-noden. Ă
terstÄr att göra följande:
- Definiera standardrubriken
Authorizationmed vÀrdetBearer ${$dynamicVar.token}pÄ nivÄn av Project-noden. För detta ÀndamÄl mÄste du i Project-nodens grÀnssnitt öppna dialogen för standardrubriker (knappen Headers i det övre högra hörnet) och lÀgga till motsvarande rubrik. Dialogen med ifyllda vÀrden kommer att se ut som följer:

- Avaktivera denna rubrik frÄn login-begÀran. Det Àr uppenbart: vid inloggningen har vi Ànnu ingen token och genom denna begÀran sÀtter vi just den. DÀrför, i grÀnssnittet för login-begÀran, under fliken Headers i omrÄdet Inherited tar vi bort markeringen frÄn Authorization-rubriken.
Detta Àr allt. Nu kommer autentiseringsrubriken att lÀggas till i alla begÀrningar som Àr Àttlingar till Project-noden, förutom login-noden. Det betyder att vi nu redan har ett klart manus och vi behöver bara köra det. Vi kan köra manuset genom att vÀlja punkten Run i snabbmenyn för Project-noden.
Kontrollerar korrektheten av postskapandet
Vid detta stadium kan vÄrt manus logga in och, med hjÀlp av autentiseringstoken, skapa inlÀgg. Men vi mÄste se till att det nyss skapade inlÀgget har ett korrekt namn. Det vill sÀga, i grund och botten kvarstÄr följande:
- Skicka en begÀran för att hÀmta inlÀgget efter id,
- Kontrollera att namnet som kommer frÄn servern överensstÀmmer med namnet som skickades vid skapandet av inlÀgget
LĂ„t oss titta pĂ„ det första steget. Eftersom vĂ€rdet pĂ„ id bestĂ€ms under skriptets körning Ă€r det nödvĂ€ndigt att skapa en dynamisk variabel (vi kallar den postId) frĂ„n noden create-post pĂ„ nivĂ„n av Project-noden. SĂ„ hĂ€r gör vi det vet vi redan, det Ă€r tillrĂ€ckligt att gĂ„ till avsnittet Spara token i en variabel. Ă
terstÄr bara att skapa en begÀran för att hÀmta inlÀgget med det angivna id:t. För detta ÀndamÄl ska vi skapa en RequestStep get-post med följande parametrar:
- BegÀrningstyp: GET
- URL: ${domain}/posts/${$dynamicVar.postId}
För att genomföra det andra steget behöver vi bekanta oss med noden. Assertion-noden Àr en nod som gör det möjligt att skriva kontroller för specifika förfrÄgningar. Varje Assertion-nod kan innehÄlla flera pÄstÄenden (kontroller). LÀs mer om alla typer av assertioner i vÄr . Vi kommer att anvÀnda Compare assertion med operatorn equal. Det finns flera sÀtt att skapa assertioner:
- LÄngt. Skapa assertion-nod manuellt frÄn kontextmenyn för RequestStep-noden. I den skapade Assertion-noden lÀggs det intressanta pÄstÄendet till och fÀlten fylls i.
- Snabbt. Skapa assertion-nod tillsammans med pÄstÄendet frÄn svaret av RequestStep-noden med hjÀlp av kontextmenyn.
Vi anvÀnder oss av det andra sÀttet. SÄ hÀr kommer det att se ut för vÄrt fall.

För dem som inte förstod, sÄ sker följande:
- Gör en förfrÄgan i noden get-post
- I fliken Parsed öppna kontextmenyn för svaret och vÀlj Create assertion -> Compare -> Equal
Grattis, vi har skapat vÄrt första test! Enkelt, eller hur? Nu kan du köra scenariot helt och hÄllet och njuta av resultatet. Kvar Àr bara att refaktorera och flytta title till en enskild variabel. Men vi överlÄter det till dig som en lÀxa)
Slutsats
I denna vÀgledning har vi skapat ett komplett scenario och dessutom gjort en översyn av nÄgra funktioner i vÄr produkt. SjÀlvklart utnyttjade vi inte all funktionalitet och i kommande artiklar kommer vi att göra en detaljerad översyn av TestMace:s möjligheter. HÄll utkik efter uppdateringar!
P.S. För dem som inte orkar Äterskapa alla steg har vi vÀnligen delat med projektet frÄn artikeln. Du kan öppna det med hjÀlp av Arkiv -> Open project och vÀlja mappen Project.
KĂ€lla: habr.com

