
Hej allihopa. Vi börjar sakta men sÀkert komma ut ur skuggorna och fortsÀtta artikelserien om vÄr produkt. EfterÄt. recensionsartikeln, vi fick mycket feedback (mestadels positiv), förslag och felrapporter. Idag kommer vi att visa i praktiken och du kommer att kunna uppskatta nÄgra av funktionerna i vÄr applikation. För en mer fullstÀndig fördjupning rekommenderar jag att du lÀser vÄr dokumentation pÄ SÄ, lÄt oss köra!
Installation
LÄt oss börja med grunderna. Appen Àr tillgÀnglig och testas pÄ tre plattformar: Linux, Windows, MacOS. Du kan ladda ner installationsprogrammet för det operativsystem du Àr intresserad av frÄn För Linux-anvÀndare finns det ett alternativ att installera Vi hoppas verkligen att vi snart kommer till Microsoft Store och App Store (Men Àr det nödvÀndigt? Vad tycker du?).
Experimentellt scenario
Vi valde följande standardscenario som testobjekt:
- logga in: anvÀndare - admin, lösenord - lösenord
- lÄt oss lÀgga till en ny post
- LÄt oss kontrollera att posten lades till korrekt
Vi kommer att testa pÄ Detta Àr normalt , vilket Àr perfekt för att testa sÄdana applikationer. Vi har bara lagt till tokenauktorisering till alla json-server-rutter och skapat en inloggningsmetod för att fÄ denna token. Vi kommer att gÄ framÄt gradvis och gradvis förbÀttra vÄrt projekt.
Skapa ett projekt och försöka skapa en entitet utan auktorisering
Först, lÄt oss skapa ett nytt projekt (Fil->Nytt projektOm du kör programmet för första gÄngen öppnas det nya projektet automatiskt. LÄt oss först försöka göra en begÀran om att skapa en ny post (plötsligt Àr det möjligt att skapa poster utan auktorisering). VÀlj alternativen i snabbmenyn för noden Projekt. LÀgg till nod -> RequestStepVi stÀller in nodnamnet till skapa-inlÀggSom ett resultat skapas en ny nod i trÀdet och en flik för noden öppnas. LÄt oss stÀlla in följande frÄgeparametrar:
- FörfrÄgningstyp: POST
- url:
- BegÀrantext: json med vÀrde
{"title": "New testmace quick start post"}
Om du gjorde allt korrekt kommer grÀnssnittet att se ut sÄ hÀr:

Men om vi försöker utföra begÀran kommer servern att returnera en 401-kod och utan auktorisering har vi ingen chans pÄ den hÀr servern. Tja, det Àr att vÀnta).
LÀgga till en auktoriseringsbegÀran
Som redan nÀmnts har vi en POST-slutpunkt /login, som accepterar en json av följande typ som en förfrÄgningstext: {"username": "<username>", "password": "<password>"}var username О password (Äterigen, frÄn inledningen ovan) har betydelser admin О password respektive. Som svar returnerar denna slutpunkt json av formen {"token": "<token>"}LÄt oss anvÀnda det för auktorisering. LÄt oss skapa RequestStep nod med namn logga in, kommer att agera som en förfader Projekt nod. AnvÀnd dra-och-slÀpp för att flytta noden högre upp i trÀdet Àn noden skapa-inlÀggLÄt oss stÀlla in följande parametrar för den nyligen skapade frÄgan:
- FörfrÄgningstyp: POST
- url:
- BegÀrantext: json med vÀrde
{"username": "admin", "password": "password"}
LÄt oss köra begÀran och hÀmta den tvÄhundrade koden med token i svaret. NÄgot i stil med detta:

Refactoring: Ta bort domÀndubbletter
FrÄgorna Àr Ànnu inte lÀnkade till ett enda scenario. Men detta Àr inte den enda nackdelen. Om du tittar noga kan du se att Ätminstone domÀnen Àr duplicerad i bÄda frÄgorna. Inte bra. Det Àr hög tid att omstrukturera denna del av framtidsscenariot, och variabler kommer att hjÀlpa oss med detta.
I en första approximation spelar variabler samma roll som i andra liknande verktyg och programmeringssprĂ„k â de eliminerar dubbelarbete, ökar lĂ€sbarheten etc. Du kan lĂ€sa mer om variabler i I det hĂ€r fallet behöver vi anvĂ€ndarvariabler.
LÄt oss definiera en variabel pÄ projektnodnivÄ domain med mening https://testmace-quick-start.herokuapp.com. För detta Àr det nödvÀndigt
- Ăppna fliken med den hĂ€r noden och klicka pĂ„ kalkylatorikonen i det övre högra hörnet
- Klicka pĂ„ + LĂGG TILL VARIABEL
- Ange variabelnamnet och vÀrdet
I vÄrt fall kommer dialogrutan med den tillagda variabeln att se ut sÄ hÀr:

OK. Tack vare arv kan vi nu anvÀnda den hÀr variabeln i Àttlingar pÄ vilken kapslingsnivÄ som helst. I vÄrt fall Àr dessa noder logga in О skapa-inlÀggFör att kunna anvÀnda en variabel i ett textfÀlt mÄste du skriva ${<variable_name>}Till exempel konverteras URL:en för inloggning till ${domain}/loginrespektive för skapa-inlÀgg nodens URL kommer att se ut sÄ hÀr ${domain}/posts.
SÄ, enligt DRY-principen, förbÀttrade vi manuset lite.
Spara token till en variabel
Eftersom vi pratar om variabler, lĂ„t oss utveckla detta Ă€mne lite. För nĂ€rvarande, vid en lyckad inloggning, fĂ„r vi en auktoriseringstoken frĂ„n servern, som vi behöver i efterföljande förfrĂ„gningar. LĂ„t oss spara denna token i en variabel. Eftersom variabelns vĂ€rde kommer att bestĂ€mmas under körningen av skriptet, kommer vi att anvĂ€nda en speciell mekanism för detta â .
Först gör vi en inloggningsförfrÄgan. I fliken Parsad svaret, hÄll muspekaren över token och vÀlj objektet i snabbmenyn (som anropas antingen genom att högerklicka eller genom att klicka pÄ knappen ...). Tilldela till variabelEn dialogruta visas med följande fÀlt:
- Bana - vilken del av svaret som tas (i vÄrt fall Àr det
body.token) - Nuvarande vÀrde - vilket vÀrde som ligger lÀngs vÀgen (i vÄrt fall Àr detta symbolvÀrdet)
- Variabelnamn â namnet pĂ„ variabeln dĂ€r Nuvarande vĂ€rde kommer att rĂ€ddas. I vĂ„rt fall kommer det att vara
token - Nod â i vilken av förfĂ€derna variabeln kommer att skapas VariabelnamnLĂ„t oss vĂ€lja Projekt
Den fÀrdiga dialogrutan ser ut sÄ hÀr:

Nu, varje gÄng noden exekveras, logga in dynamisk variabel token kommer att uppdateras med det nya vÀrdet frÄn svaret. Och denna variabel kommer att lagras i Projekt nod och kommer att vara tillgÀnglig för Àttlingar genom arv.
För att komma Ät dynamiska variabler mÄste du anvÀnda $dynamicVarFör att till exempel komma Ät en sparad token mÄste du anropa ${$dynamicVar.token}.
Vi skickar auktoriseringstoken till förfrÄgningar
I föregÄende steg fick vi en auktoriseringstoken och allt vi behöver göra Àr att lÀgga till en header. Authorization med mening Bearer <tokenValue> i alla förfrÄgningar som krÀver auktorisering, inklusive skapa-inlÀggDet finns flera sÀtt att göra detta:
- Kopiera token manuellt och lÀgg till auktoriseringsrubriken till de frÄgor du Àr intresserad av. Den hÀr metoden fungerar, men dess anvÀndning Àr begrÀnsad till frÄgor av typen "skapa och kasta bort". Den Àr inte lÀmplig för flera exekveringar av scenarier.
- AnvÀnd funktionaliteten .
- AnvÀnd
Att anvÀnda den andra metoden verkar sjÀlvklart, men i samband med den hÀr artikeln Àr den hÀr metoden⊠ointressant. Ja, egentligen: plus-minus-auktoriseringsmekanismen Àr bekant för dig frÄn andra verktyg (Àven om vi har saker som ) och det Àr osannolikt att det vÀcker nÄgra frÄgor.
Standardrubriker Àr en annan sak! Kort sagt Àr standardrubriker HTTP-rubriker som Àrvs frÄn förfÀder och som lÀggs till i begÀran som standard om de inte uttryckligen inaktiveras. Med hjÀlp av den hÀr funktionen kan du till exempel implementera anpassad auktorisering eller helt enkelt bli av med dubbletter i scenarier. LÄt oss tillÀmpa den hÀr funktionen för att kasta en token i rubriker.
Tidigare hade vi förutseendet att spara token i en dynamisk variabel $dynamicVar.token pÄ projektnodnivÄ. Följande ÄterstÄr att göra:
- Definiera standardtitel
Authorizationmed meningBearer ${$dynamicVar.token}pÄ ProjektnodnivÄ. För att göra detta, öppna en dialogruta med standardrubriker i ProjektnodgrÀnssnittet (knapp Headers i det övre högra hörnet) och lÀgg till lÀmplig titel. Dialogrutan med de ifyllda vÀrdena kommer att se ut sÄ hÀr:

- Inaktivera den hĂ€r rubriken frĂ„n inloggningsförfrĂ„gan. Detta Ă€r förstĂ„eligt: vid inloggningstillfĂ€llet har vi Ă€nnu ingen token och vi kommer att installera den med denna begĂ€ran. DĂ€rför, i grĂ€nssnittet för inloggningsförfrĂ„gan i fliken Headers i omrĂ„det Ărvde LĂ„t oss avmarkera rubriken Auktorisering.
Det var allt. Nu kommer auktoriseringsrubriken att lÀggas till alla förfrÄgningar som Àr underordnade till Projekt-noden, förutom inloggningsnoden. Det visar sig att vi i det hÀr skedet redan har ett skript klart och allt vi behöver göra Àr att köra det. Du kan köra skriptet genom att vÀlja Körning i snabbmenyn för Projekt-noden.
Kontrollerar att inlÀgget skapades korrekt
Vid det hÀr laget kan vÄrt skript logga in och skapa ett inlÀgg med hjÀlp av en auktoriseringstoken. Vi mÄste dock se till att det nyskapade inlÀgget har rÀtt namn. SÄ i huvudsak ÄterstÄr bara att göra följande:
- Skicka en begÀran om att fÄ ett inlÀgg via id,
- Kontrollera att namnet som tas emot frÄn servern matchar namnet som skickades nÀr inlÀgget skapades
LÄt oss titta pÄ det första steget. Eftersom id-vÀrdet bestÀms under skriptkörningen Àr det nödvÀndigt att skapa en dynamisk variabel (lÄt oss kalla den postId) frÄn noden skapa-inlÀgg pÄ projektnodnivÄ. Vi vet redan hur man gör detta, se bara avsnittet Spara token till en variabelAllt som ÄterstÄr Àr att skapa en begÀran om att fÄ ett inlÀgg med detta id. För att göra detta, skapa ett RequestStep. fÄ-inlÀgg med följande parametrar:
- FörfrÄgningstyp: GET
- URL: ${domain}/posts/${$dynamicVar.postId}
För att genomföra det andra steget behöver vi bekanta oss med nod. En assertionnod Àr en nod som lÄter dig skriva kontroller för specifika frÄgor. Varje assertionnod kan innehÄlla flera assertioner (kontroller). Du kan lÀsa mer om alla typer av assertioner i vÄr . Vi kommer anvÀnda Compare pÄstÄende med operator equalDet finns flera sÀtt att skapa pÄstÄenden:
- LÄng. Skapa manuellt en Assertion-nod frÄn kontextmenyn för RequestStep-noden. LÀgg till intresseanmÀlan och fyll i fÀlten i den skapade Assertion-noden.
- Snabb: Skapa en Assertion-nod tillsammans med en assertion frÄn RequestStep-nodsvaret med hjÀlp av kontextmenyn.
LÄt oss anvÀnda den andra metoden. SÄ hÀr kommer det att se ut i vÄrt fall.

För er som inte förstÄr, hÀr Àr vad som hÀnder:
- Gör en frÄga i noden fÄ-inlÀgg
- I fliken Parsad svara pÄ samtalet via snabbmenyn och vÀlj Skapa pÄstÄende -> JÀmför -> Lika
Grattis, vi har skapat det första testet! Enkelt, eller hur? Nu kan du köra skriptet helt och njuta av resultatet. Allt som ÄterstÄr Àr att omstrukturera det lite och flytta ut det. title till en separat variabel. Men vi lÀmnar det som lÀxa Ät dig)
Slutsats
I den hÀr guiden har vi skapat ett komplett scenario och Àven granskat nÄgra av funktionerna i vÄr produkt. Naturligtvis anvÀnde vi inte all funktionalitet och i följande artiklar kommer vi att göra en detaljerad granskning av TestMaces möjligheter. HÄll utkik!
P.S. För er som Ă€r för lata för att upprepa alla steg har vi vĂ€nligen gjort en video med projektet frĂ„n artikeln. Du kan öppna den med Fil -> Ăppet projekt och vĂ€lj Projekt-mappen.
KĂ€lla: will.com

