{"id":54167,"date":"2019-12-19T00:00:00","date_gmt":"2019-12-18T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-bystryj-start"},"modified":"2020-02-18T14:02:08","modified_gmt":"2020-02-18T11:02:08","slug":"testmace-bystryj-start","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. Snabb start","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hej alla. Vi b\u00f6rjar l\u00e5ngsamt komma fram i ljuset och forts\u00e4tter v\u00e5r serie av artiklar om v\u00e5r produkt. Efter <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">den f\u00f6reg\u00e5ende<\/a><\/noindex> \u00f6versiktsartikeln fick vi m\u00e5nga \u00e5terkopplingar (\u00f6verv\u00e4gande positiva), f\u00f6rslag och buggrapporter. Idag kommer vi att visa <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> det i praktiken och ni kommer att kunna utv\u00e4rdera n\u00e5gra funktioner i v\u00e5r applikation. F\u00f6r en mer komplett upplevelse rekommenderar jag att ni bes\u00f6ker v\u00e5r dokumentation p\u00e5 adressen <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. S\u00e5, l\u00e5t oss b\u00f6rja! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Installation<\/h1>\n<p><\/p>\n<p>Vi b\u00f6rjar med det uppenbara. Applikationen \u00e4r tillg\u00e4nglig och kan verkligen testas p\u00e5 tre plattformar \u2013 Linux, Windows, MacOS. Ni kan ladda ner installationsprogrammet f\u00f6r den intressanta OS fr\u00e5n <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">v\u00e5r website<\/a><\/noindex>. F\u00f6r Linux-anv\u00e4ndare finns det m\u00f6jlighet att installera <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap-paketet<\/a><\/noindex>. Vi hoppas verkligen att vi snart ocks\u00e5 f\u00e5r till Microsoft Store och App Store (beh\u00f6vs det? Vad tycker ni?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Testscenariot<\/h1>\n<p><\/p>\n<p>Vi har valt f\u00f6ljande standardscenario som testobjekt:<\/p>\n<p><\/p>\n<ul>\n<li>logga in: anv\u00e4ndare \u2013 admin, l\u00f6senord \u2013 password<\/li>\n<li>l\u00e4gga till en ny post<\/li>\n<li>kontrollera korrektheten i till\u00e4ggningen av posten<\/li>\n<\/ul>\n<p><\/p>\n<p>Vi kommer att testa p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. Det \u00e4r en vanlig <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, som passar perfekt f\u00f6r att testa s\u00e5dana applikationer. Vi har bara lagt till tokenbaserad autentisering p\u00e5 alla rutter av json-server och skapat en login-metod f\u00f6r att f\u00e5 den n\u00e4mnda token. Vi kommer att g\u00e5 fram\u00e5t steg f\u00f6r steg och gradvis f\u00f6rb\u00e4ttra v\u00e5rt projekt.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Skapande av projekt och f\u00f6rs\u00f6k att skapa en entitet utan autentisering<\/h2>\n<p><\/p>\n<p>F\u00f6rst skapar vi ett nytt projekt (<strong>Arkiv<\/strong>-&gt;<strong>Nytt projekt<\/strong>). Om ni k\u00f6r applikationen f\u00f6r f\u00f6rsta g\u00e5ngen \u00f6ppnas ett nytt projekt automatiskt. Vi b\u00f6rjar med att f\u00f6rs\u00f6ka g\u00f6ra en beg\u00e4ran om att skapa en ny post (kanske skapandet av poster \u00e4r tillg\u00e4ngligt utan autentisering). V\u00e4lj i kontextmenyn Project noden som heter <strong>L\u00e4gg till nod<\/strong> -&gt; <strong>Beg\u00e4ranSteg<\/strong>. Ange f\u00f6ljande namn f\u00f6r noden: <strong>create-post<\/strong>. Resultatet blir att en ny nod skapas i tr\u00e4det och fliken f\u00f6r denna nod \u00f6ppnas. St\u00e4ll in f\u00f6ljande parameterar f\u00f6r beg\u00e4ran:<\/p>\n<p><\/p>\n<ul>\n<li>Typ av beg\u00e4ran: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/posts\">https:\/\/testmace-quick-start.herokuapp.com\/posts<\/a><\/noindex><\/li>\n<li>Beg\u00e4rans kropp: json med v\u00e4rdet <code>{\"title\": \"New testmace quick start post\"}<\/code><br \/>\nOm ni har gjort allt r\u00e4tt kommer gr\u00e4nssnittet att se ut som f\u00f6ljande:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Men om vi f\u00f6rs\u00f6ker genomf\u00f6ra beg\u00e4ran kommer servern att returnera kod 401 och utan autentisering \u00e4r ingenting m\u00f6jligt p\u00e5 denna server. Ja, det \u00e4r helt f\u00f6rv\u00e4ntat).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">L\u00e4gg till beg\u00e4ran f\u00f6r autentisering<\/h2>\n<p><\/p>\n<p>Som redan n\u00e4mnts har vi en POST endpoint <code>\/login<\/code>, som tar emot json av f\u00f6ljande typ som beg\u00e4rans kropp: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, d\u00e4r <code>username<\/code> och <code>password<\/code> (\u00e5terigen, fr\u00e5n den inledande ovan) har betydelse <code>admin<\/code> och <code>password<\/code> d\u00e4rmed. I svaret returnerar denna endpoint json av typen <code>{\"token\": \"\"}<\/code>. Vi kommer att anv\u00e4nda det f\u00f6r autentisering. L\u00e5t oss skapa <strong>Beg\u00e4ranSteg<\/strong> en nod med namnet <strong>login<\/strong>, d\u00e4r f\u00f6r\u00e4ldern kommer att vara <strong>Projekt<\/strong> noden. Med hj\u00e4lp av drag-and-drop flyttar du denna nod i tr\u00e4det h\u00f6gre \u00e4n noden <strong>create-post<\/strong>. Vi kommer att st\u00e4lla in f\u00f6ljande parametrar f\u00f6r den nyligen skapade f\u00f6rfr\u00e5gan:<\/p>\n<p><\/p>\n<ul>\n<li>Typ av beg\u00e4ran: POST<\/li>\n<li>url: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/login\">https:\/\/testmace-quick-start.herokuapp.com\/login<\/a><\/noindex><\/li>\n<li>Beg\u00e4rans kropp: json med v\u00e4rdet <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Vi utf\u00f6r f\u00f6rfr\u00e5gan och f\u00e5r en tv\u00e5hundrad elva kod med token i svaret. S\u00e5 h\u00e4r:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/222b2a0b965b4c1135b5b62c0b7424ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h2 id=\"refaktoring-ubiraem-dublirovanie-domena\">Refaktorering: tar bort dom\u00e4nerna<\/h2>\n<p><\/p>\n<p>Tills dess \u00e4r f\u00f6rfr\u00e5gningarna inte kopplade i ett enda scenario. Men det \u00e4r inte den enda bristen. Om du tittar noga kan du m\u00e4rka att \u00e5tminstone dom\u00e4nen dupliceras i b\u00e5da f\u00f6rfr\u00e5gningarna. Inte bra. Det \u00e4r dags att refaktorera denna del av det framtida scenariot och variabler kommer att hj\u00e4lpa oss med detta.<\/p>\n<p><\/p>\n<p>I f\u00f6rsta hand utf\u00f6r variabler samma roll som i andra liknande verktyg och programmeringsspr\u00e5k \u2014 eliminera duplicering, \u00f6ka l\u00e4sbarheten, osv. Mer om variabler kan l\u00e4sas i <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">v\u00e5r dokumentation<\/a><\/noindex>. I detta fall kommer vi att beh\u00f6va anv\u00e4ndardefinierade variabler. <\/p>\n<p><\/p>\n<p>Definiera en variabel p\u00e5 projektets niv\u00e5 <code>domain<\/code> med v\u00e4rdet <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. F\u00f6r detta beh\u00f6ver du<\/p>\n<p><\/p>\n<ul>\n<li>\u00f6ppna fliken f\u00f6r denna nod och klicka p\u00e5 kalkylatorikonen till h\u00f6ger uppe<\/li>\n<li>klicka p\u00e5 <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>ange namn och v\u00e4rde f\u00f6r variabeln<br \/>\nI v\u00e5rt fall kommer dialogen med den tillagda variabeln att se ut som f\u00f6ljer:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. Nu kan vi, tack vare arv, anv\u00e4nda denna variabel i avkommor p\u00e5 vilken niv\u00e5 av inb\u00e4ddning som helst. I v\u00e5rt fall \u00e4r det noder <strong>login<\/strong> och <strong>create-post<\/strong>. F\u00f6r att anv\u00e4nda variabeln i textrutan m\u00e5ste du skriva <code>${}<\/code>. Till exempel, url f\u00f6r inloggning omvandlas till <code>${domain}\/login<\/code>, och f\u00f6r <strong>create-post<\/strong> noden kommer url att se ut som <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>S\u00e5ledes, med principen DRY i \u00e5tanke, har vi n\u00e5got f\u00f6rb\u00e4ttrat scenariot.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Spara token i en variabel<\/h2>\n<p><\/p>\n<p>Eftersom vi pratar om variabler, l\u00e5t oss utveckla detta \u00e4mne n\u00e5got. Just nu f\u00e5r vi vid en lyckad inloggning en autentiseringstoken fr\u00e5n servern, som vi kommer att beh\u00f6va i efterf\u00f6ljande f\u00f6rfr\u00e5gningar. L\u00e5t oss spara denna token i en variabel. Eftersom v\u00e4rdet p\u00e5 variabeln kommer att definieras under k\u00f6rning av scenariot, anv\u00e4nder vi en speciell mekanism \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">dynamiska variabler<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>F\u00f6r att b\u00f6rja, l\u00e5t oss g\u00f6ra en inloggningsbeg\u00e4ran. I fliken <strong>Parsed<\/strong> \u043e\u0442\u0432\u0435\u0442\u0430 \u043d\u0430\u0432\u0435\u0434\u0438\u0442\u0435 \u043a\u0443\u0440\u0441\u043e\u0440 \u043d\u0430 \u0442\u043e\u043a\u0435\u043d \u0438 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u043c \u043c\u0435\u043d\u044e (\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043b\u0438\u0431\u043e \u043f\u0440\u0430\u0432\u043e\u0439 \u043a\u043d\u043e\u043f\u043a\u043e\u0439 \u043c\u044b\u0448\u0438, \u043b\u0438\u0431\u043e \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c \u043d\u0430 \u043a\u043d\u043e\u043f\u043a\u0443 &#8230;) \u0432\u044b\u0431\u0435\u0440\u0438\u0442\u0435 \u043f\u0443\u043d\u043a\u0442 <strong>Tilldela till variabel<\/strong>. En dialogruta kommer att dyka upp med f\u00f6ljande f\u00e4lt:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Path<\/strong> \u2014 vilken del av svaret som tas (i v\u00e5rt fall \u00e4r det <code>body.token<\/code>)<\/li>\n<li><strong>Aktuellt v\u00e4rde<\/strong> \u2014 vilket v\u00e4rde som finns p\u00e5 s\u00f6kv\u00e4gen Path (i v\u00e5rt fall \u00e4r detta token-v\u00e4rdet)<\/li>\n<li><strong>Variabelnamn<\/strong> \u2014 namnet p\u00e5 variabeln d\u00e4r <strong>Aktuellt v\u00e4rde<\/strong> det kommer att sparas. I v\u00e5rt fall blir det <code>token<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 i vilken av f\u00f6rf\u00e4derna variabeln kommer att skapas <strong>Variabelnamn<\/strong>. L\u00e5t oss v\u00e4lja Projekt<\/li>\n<\/ul>\n<p><\/p>\n<p>Fyllt dialog ser ut som f\u00f6ljer:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nu, vid varje k\u00f6rning av noden, <strong>login<\/strong> kommer den dynamiska variabeln <code>token<\/code> att uppdateras med det nya v\u00e4rdet fr\u00e5n svaret. Och denna variabel kommer att lagras i <strong>Projekt<\/strong> noden och tack vare \u00e4rvandet vara tillg\u00e4nglig f\u00f6r efterkommande.<\/p>\n<p><\/p>\n<p>F\u00f6r att referera till dynamiska variabler m\u00e5ste man anv\u00e4nda <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">inbyggd variabel<\/a><\/noindex> <code>$dynamicVar<\/code>. Till exempel, f\u00f6r att n\u00e5 det sparade tokenet b\u00f6r du aktivera <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">Vi skickar autentiseringstoken i beg\u00e4rningar<\/h2>\n<p><\/p>\n<p>I tidigare steg fick vi autentiseringstoken och allt vi beh\u00f6ver g\u00f6ra \u00e4r att l\u00e4gga till en rubrik <code>Authorization<\/code> med v\u00e4rdet <code>Bearer<\/code> i alla beg\u00e4rningar som kr\u00e4ver autentisering, inklusive i <strong>create-post<\/strong>. Det finns flera s\u00e4tt att g\u00f6ra detta:<\/p>\n<p><\/p>\n<ol>\n<li>\u0412\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0432 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b. \u0421\u043f\u043e\u0441\u043e\u0431 \u0440\u0430\u0431\u043e\u0447\u0438\u0439, \u043e\u0434\u043d\u0430\u043a\u043e \u0435\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430\u043c\u0438 \u0432\u0438\u0434\u0430 &#171;\u0441\u0434\u0435\u043b\u0430\u043b \u0438 \u0432\u044b\u043a\u0438\u043d\u0443\u043b&#187;. \u0414\u043b\u044f \u043c\u043d\u043e\u0433\u043e\u043a\u0440\u0430\u0442\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442<\/li>\n<li>Anv\u00e4nda funktionaliteten f\u00f6r <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">autentisering<\/a><\/noindex>.<\/li>\n<li>Anv\u00e4nd <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">standardrubriker<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Anv\u00e4ndningen av den andra metoden verkar uppenbar, men i kontexten av denna artikel \u00e4r en s\u00e5dan ansats\u2026 ointressant. Egentligen: autentiseringsmekanismen \u00e4r mer eller mindre bekant f\u00f6r er fr\u00e5n andra verktyg (\u00e4ven om vi har saker som <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">\u00e4rvande av autentiseringar<\/a><\/noindex>) och kommer sannolikt inte att v\u00e4cka n\u00e5gra fr\u00e5gor. <\/p>\n<p><\/p>\n<p>En annan historia \u00e4r standardrubriker! Kort sagt \u00e4r standardrubrikerna de som \u00e4rvs fr\u00e5n HTTP-rubrikerna och som l\u00e4ggs till beg\u00e4ran som standard om de inte uttryckligen st\u00e4ngs av. Med denna funktionalitet kan man till exempel implementera anpassad autentisering eller helt enkelt bli av med dubbletter i scenarier. Vi till\u00e4mpar denna funktion f\u00f6r att skicka en token i rubrikerna.<\/p>\n<p><\/p>\n<p>Tidigare har vi f\u00f6rutseende sparat token i en dynamisk variabel <code>$dynamicVar.token<\/code> p\u00e5 niv\u00e5n av Project-noden. \u00c5terst\u00e5r att g\u00f6ra f\u00f6ljande:<\/p>\n<p><\/p>\n<ol>\n<li>Definiera standardrubriken <code>Authorization<\/code> med v\u00e4rdet <code>Bearer ${$dynamicVar.token}<\/code> p\u00e5 niv\u00e5n av Project-noden. F\u00f6r detta \u00e4ndam\u00e5l m\u00e5ste du i Project-nodens gr\u00e4nssnitt \u00f6ppna dialogen f\u00f6r standardrubriker (knappen <strong>Headers<\/strong> i det \u00f6vre h\u00f6gra h\u00f6rnet) och l\u00e4gga till motsvarande rubrik. Dialogen med ifyllda v\u00e4rden kommer att se ut som f\u00f6ljer:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Avaktivera denna rubrik fr\u00e5n login-beg\u00e4ran. Det \u00e4r uppenbart: vid inloggningen har vi \u00e4nnu ingen token och genom denna beg\u00e4ran s\u00e4tter vi just den. D\u00e4rf\u00f6r, i gr\u00e4nssnittet f\u00f6r login-beg\u00e4ran, under fliken <strong>Headers<\/strong> i omr\u00e5det <strong>Inherited<\/strong> tar vi bort markeringen fr\u00e5n Authorization-rubriken. <\/li>\n<\/ol>\n<p><\/p>\n<p>Detta \u00e4r allt. Nu kommer autentiseringsrubriken att l\u00e4ggas till i alla beg\u00e4rningar som \u00e4r \u00e4ttlingar till Project-noden, f\u00f6rutom login-noden. Det betyder att vi nu redan har ett klart manus och vi beh\u00f6ver bara k\u00f6ra det. Vi kan k\u00f6ra manuset genom att v\u00e4lja punkten <strong>Run<\/strong> i snabbmenyn f\u00f6r Project-noden. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Kontrollerar korrektheten av postskapandet<\/h2>\n<p><\/p>\n<p>Vid detta stadium kan v\u00e5rt manus logga in och, med hj\u00e4lp av autentiseringstoken, skapa inl\u00e4gg. Men vi m\u00e5ste se till att det nyss skapade inl\u00e4gget har ett korrekt namn. Det vill s\u00e4ga, i grund och botten kvarst\u00e5r f\u00f6ljande:<\/p>\n<p><\/p>\n<ul>\n<li>Skicka en beg\u00e4ran f\u00f6r att h\u00e4mta inl\u00e4gget efter id, <\/li>\n<li>Kontrollera att namnet som kommer fr\u00e5n servern \u00f6verensst\u00e4mmer med namnet som skickades vid skapandet av inl\u00e4gget<\/li>\n<\/ul>\n<p><\/p>\n<p>L\u00e5t oss titta p\u00e5 det f\u00f6rsta steget. Eftersom v\u00e4rdet p\u00e5 id best\u00e4ms under skriptets k\u00f6rning \u00e4r det n\u00f6dv\u00e4ndigt att skapa en dynamisk variabel (vi kallar den <code>postId<\/code>) fr\u00e5n noden <strong>create-post<\/strong> p\u00e5 niv\u00e5n av Project-noden. S\u00e5 h\u00e4r g\u00f6r vi det vet vi redan, det \u00e4r tillr\u00e4ckligt att g\u00e5 till avsnittet <strong>Spara token i en variabel<\/strong>. \u00c5terst\u00e5r bara att skapa en beg\u00e4ran f\u00f6r att h\u00e4mta inl\u00e4gget med det angivna id:t. F\u00f6r detta \u00e4ndam\u00e5l ska vi skapa en RequestStep <strong>get-post<\/strong> med f\u00f6ljande parametrar:<\/p>\n<p><\/p>\n<ul>\n<li>Beg\u00e4rningstyp: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>F\u00f6r att genomf\u00f6ra det andra steget beh\u00f6ver vi bekanta oss med <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> noden. Assertion-noden \u00e4r en nod som g\u00f6r det m\u00f6jligt att skriva kontroller f\u00f6r specifika f\u00f6rfr\u00e5gningar. Varje Assertion-nod kan inneh\u00e5lla flera p\u00e5st\u00e5enden (kontroller). L\u00e4s mer om alla typer av assertioner i v\u00e5r <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumentationen<\/a><\/noindex>. Vi kommer att anv\u00e4nda <code>Compare<\/code> assertion med operatorn <code>equal<\/code>. Det finns flera s\u00e4tt att skapa assertioner:<\/p>\n<p><\/p>\n<ol>\n<li>L\u00e5ngt. Skapa assertion-nod manuellt fr\u00e5n kontextmenyn f\u00f6r RequestStep-noden. I den skapade Assertion-noden l\u00e4ggs det intressanta p\u00e5st\u00e5endet till och f\u00e4lten fylls i.<\/li>\n<li>Snabbt. Skapa assertion-nod tillsammans med p\u00e5st\u00e5endet fr\u00e5n svaret av RequestStep-noden med hj\u00e4lp av kontextmenyn.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vi anv\u00e4nder oss av det andra s\u00e4ttet. S\u00e5 h\u00e4r kommer det att se ut f\u00f6r v\u00e5rt fall.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Snabb start\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>F\u00f6r dem som inte f\u00f6rstod, s\u00e5 sker f\u00f6ljande:<\/p>\n<p><\/p>\n<ol>\n<li>G\u00f6r en f\u00f6rfr\u00e5gan i noden <strong>get-post<\/strong><\/li>\n<li>I fliken <strong>Parsed<\/strong> \u00f6ppna kontextmenyn f\u00f6r svaret och v\u00e4lj <strong>Create assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Equal<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Grattis, vi har skapat v\u00e5rt f\u00f6rsta test! Enkelt, eller hur? Nu kan du k\u00f6ra scenariot helt och h\u00e5llet och njuta av resultatet. Kvar \u00e4r bara att refaktorera och flytta <code>title<\/code> till en enskild variabel. Men vi \u00f6verl\u00e5ter det till dig som en l\u00e4xa)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Slutsats<\/h1>\n<p><\/p>\n<p>I denna v\u00e4gledning har vi skapat ett komplett scenario och dessutom gjort en \u00f6versyn av n\u00e5gra funktioner i v\u00e5r produkt. Sj\u00e4lvklart utnyttjade vi inte all funktionalitet och i kommande artiklar kommer vi att g\u00f6ra en detaljerad \u00f6versyn av TestMace:s m\u00f6jligheter. H\u00e5ll utkik efter uppdateringar!<\/p>\n<p><\/p>\n<p>P.S. F\u00f6r dem som inte orkar \u00e5terskapa alla steg har vi v\u00e4nligen delat <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">arkiv<\/a><\/noindex> med projektet fr\u00e5n artikeln. Du kan \u00f6ppna det med hj\u00e4lp av <strong>Arkiv<\/strong> -&gt; <strong>Open project<\/strong> och v\u00e4lja mappen Project.<\/p>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u043f\u043e\u0442\u0438\u0445\u043e\u043d\u044c\u043a\u0443 \u0432\u044b\u0445\u043e\u0434\u0438\u043c \u0438\u0437 \u0442\u0435\u043d\u0438 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043e \u043d\u0430\u0448\u0435\u043c \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0435. \u041f\u043e\u0441\u043b\u0435 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u043e\u0431\u0437\u043e\u0440\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0437\u044b\u0432\u043e\u0432 (\u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445), \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0438 bug \u0440\u0435\u043f\u043e\u0440\u0442\u043e\u0432. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u043f\u043e\u043a\u0430\u0436\u0435\u043c TestMace \u0432 \u0434\u0435\u043b\u0435 \u0438 \u0432\u044b \u043f\u043e \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0443 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0438\u0448\u043a\u0438 \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0414\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043b\u043d\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f \u0441\u043e\u0432\u0435\u0442\u0443\u044e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u043d\u0430\u0448\u0435\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043f\u043e \u0430\u0434\u0440\u0435\u0441\u0443 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54167","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sv\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-18T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:08+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47TestMace. Snabb start | ProHoster","description":"Hej alla.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47TestMace. \u0411\u044b\u0441\u0442\u0440\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442.","og:url":"https:\/\/prohoster.info\/sv\/blog\/news\/testmace-bystryj-start","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-18T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:08+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54167","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 10:17:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:34","updated":"2026-01-24 10:17:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}