{"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\/sl\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. Hiter za\u010detek","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pozdravljeni. Po\u010dasi prihajamo iz sence in nadaljujemo s serijo \u010dlankov o na\u0161em produktu. Po <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">prej\u0161njem<\/a><\/noindex> pregledni \u010dlanku smo prejeli \u0161tevilne povratne informacije (ve\u010dinoma pozitivne), predloge in poro\u010dila o napakah. Danes vam bomo pokazali <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> v akciji, tako da boste lahko ocenili nekatere funkcionalnosti na\u0161e aplikacije. Za bolj popolno potopitev priporo\u010damo obisk na\u0161e dokumentacije na naslovu <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. No, gremo naprej! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Namestitev<\/h1>\n<p><\/p>\n<p>Za\u010dnimo s splo\u0161nimi informacijami. Aplikacija je na voljo in se lahko preizku\u0161a na treh platformah \u2014 Linux, Windows, MacOS. Prenesete lahko namestitveni program za \u017eeleni operacijski sistem s <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">na\u0161e spletne strani<\/a><\/noindex>. Za uporabnike Linuxa imamo mo\u017enost namestitve <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap paketa<\/a><\/noindex>. Zelo upamo, da bomo kmalu dodali tudi Microsoft Store in App Store (ali je to potrebno? Kaj menite?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Podatkovni scenarij<\/h1>\n<p><\/p>\n<p>Kot testni scenarij smo izbrali naslednji standardni postopek:<\/p>\n<p><\/p>\n<ul>\n<li>prijavili se bomo: uporabnik \u2014 admin, geslo \u2014 password<\/li>\n<li>dodali novo vnos<\/li>\n<li>preverili pravilno dodajanje vnosa<\/li>\n<\/ul>\n<p><\/p>\n<p>Testirali bomo na <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. To je obi\u010dajen <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, ki je odli\u010den za testiranje tak\u0161nih aplikacij. Dodali smo le avtentikacijo z \u017eetonom za vse poti json-serverja in ustvarili metodo login za pridobitev tega \u017eetona. Napredovali bomo postopoma, postopoma izbolj\u0161ujejo\u010d na\u0161 projekt.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Ustvarjanje projekta in poskus ustvarjanja entitete brez avtentikacije<\/h2>\n<p><\/p>\n<p>Najprej ustvarimo nov projekt (<strong>Datoteka<\/strong>-&gt;<strong>Nov projekt<\/strong>). \u010ce aplikacijo odpirate prvi\u010d, se bo nov projekt avtomatsko odprl. Za za\u010detek poskusimo izvesti zahtevke za ustvarjanje novega vnosa (morda je ustvarjanje vnosov dostopno brez avtentikacije). V kontekstnem meniju vozli\u0161\u010da Project izberite <strong>Dodaj vozli\u0161\u010de<\/strong> -&gt; <strong>ZahtevaKorak<\/strong>. Kot ime vozli\u0161\u010da dolo\u010dimo <strong>create-post<\/strong>. V rezultatu bo v drevesu ustvarjeno novo vozli\u0161\u010de in odprta zavihka tega vozli\u0161\u010da. Dolo\u010dimo naslednje parametre zahtevka:<\/p>\n<p><\/p>\n<ul>\n<li>Tip zahtevka: 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>Telo zahtevka: json s vrednostjo <code>{\"title\": \"New testmace quick start post\"}<\/code><br \/>\n\u010ce ste vse naredili pravilno, bo vmesnik izgledal takole:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vendar \u010de poskusimo izvesti zahtevek, bo stre\u017enik vrnil kodo 401 in brez avtentikacije na tem stre\u017eniku ne bo ni\u010d mogo\u010de. No, v splo\u0161nem pri\u010dakovano).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Dodajamo zahtevek za avtentikacijo<\/h2>\n<p><\/p>\n<p>Kot \u017ee omenjeno, imamo POST endpoint <code>\/login<\/code>, ki sprejema json pravilne oblike kot telo zahtevka: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, gde <code>username<\/code> in <code>password<\/code> (ponovno, iz uvoda iznad) imaju zna\u010denje <code>admin<\/code> in <code>password<\/code> odnosno. Kao odgovor, ovaj endpoint vra\u0107a JSON formata <code>{\"token\": \"\"}<\/code>. Iskoristi\u0107emo ga za autorizaciju. Kreira\u0107emo <strong>ZahtevaKorak<\/strong> \u010dvor pod imenom <strong>login<\/strong>, kao roditelj \u0107e se koristiti <strong>Projekt<\/strong> \u010dvor. Pomo\u0107u drag-and-drop premestite ovaj \u010dvor u drvetu iznad \u010dvora <strong>create-post<\/strong>. Dodeli\u0107emo novokreiranom zahtevu slede\u0107e parametre:<\/p>\n<p><\/p>\n<ul>\n<li>Tip zahtevka: 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>Telo zahtevka: json s vrednostjo <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Izvr\u0161i\u0107emo zahtev i dobi\u0107emo dvesta kod sa tokenom u odgovoru. Otprilike ovako:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" 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\">Refactoring: uklanjanje dupliciranja domena<\/h2>\n<p><\/p>\n<p>Za sada zahtevi nisu povezani u jedinstveni scenarij. Ali to nije jedini nedostatak. Ako se pa\u017eljivo pogleda, mo\u017ee se primetiti da se najmanje domen duplicira u oba zahteva. Nije dobro. Najbolje je vreme da refaktori\u0161emo ovaj deo budu\u0107eg scenarija i u tome \u0107e nam pomo\u0107i promenljive.<\/p>\n<p><\/p>\n<p>Na prvom pribli\u017eavanju promenljive izvr\u0161avaju istu ulogu kao i u drugim sli\u010dnim alatima i programskim jezicima \u2014 uklanjanje dupliciranja, pove\u0107anje \u010ditljivosti itd. Vi\u0161e o promenljivim se mo\u017ee pro\u010ditati u <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">our documentation<\/a><\/noindex>. U ovom slu\u010daju bi\u0107e nam potrebne korisni\u010dke promenljive. <\/p>\n<p><\/p>\n<p>Defini\u0161emo na nivou projekta \u010dvor promenljivu <code>domain<\/code> z vrednostjo <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. Da bismo to uradili, potrebno je<\/p>\n<p><\/p>\n<ul>\n<li>Otvoriti karticu sa ovim \u010dvorom i kliknuti na ikonu kalkulatora u gornjem desnom uglu<\/li>\n<li>Kliknuti na <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>Uneti ime i vrednost promenljive<br \/>\nU na\u0161em slu\u010daju dijalog sa dodatom promenljivom \u0107e izgledati ovako:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. Sada zahvaljuju\u0107i nasle\u0111ivanju mo\u017eemo koristiti ovu promenljivu u potomcima bilo kog nivoa ugnje\u017edenosti. U na\u0161em slu\u010daju to su \u010dvorovi <strong>login<\/strong> in <strong>create-post<\/strong>. Da bismo koristili promenljivu u tekstualnom polju, potrebno je napisati <code>${}<\/code>. Na primer, URL za prijavu se pretvara u <code>${domain}\/login<\/code>, odnosno za <strong>create-post<\/strong> \u010dvor URL \u0107e izgledati ovako <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>Tako, vode\u0107i se principom DRY, malo smo pobolj\u0161ali scenarij.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Skladi\u0161timo token u promenljivu<\/h2>\n<p><\/p>\n<p>Kako smo po\u010deli razgovor o promenljivima, hajde da malo razvijemo ovu temu. U ovom trenutku, u slu\u010daju uspe\u0161ne prijave dobijamo od servera autorizacijski token, koji \u0107e nam biti potreban u narednim zahtevima. Hajde da sa\u010duvamo ovaj token u promenljivoj. Po\u0161to \u0107e se vrednost promenljive odrediti tokom izvr\u0161enja scenarija, koristi\u0107emo za to poseban mehanizam \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">dinami\u010dke promenljive<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Za\u010dnimo z zahtevkom za prijavo. Na zavihku <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>Dodeli spremenljivki<\/strong>. Pojavila se bo pogovorna okna z naslednjimi polji:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Pot<\/strong> \u2014 kateri del odgovora se vzame (v na\u0161em primeru je to <code>body.token<\/code>)<\/li>\n<li><strong>Trenutna vrednost<\/strong> \u2014 kak\u0161na vrednost le\u017ei po poti Pot (v na\u0161em primeru je to vrednost \u017eetona)<\/li>\n<li><strong>Ime spremenljivke<\/strong> \u2014 ime spremenljivke, v katero <strong>Trenutna vrednost<\/strong> se bo shranjevala. V na\u0161em primeru bo to <code>token<\/code><\/li>\n<li><strong>\u010cvor<\/strong> \u2014 v katerem od prednikov bo ustvarjena spremenljivka <strong>Ime spremenljivke<\/strong>. Izberimo Projekt<\/li>\n<\/ul>\n<p><\/p>\n<p>Zapolnjeno pogovorno okno izgleda takole:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zdaj se bo ob vsakem izvajanju vozli\u0161\u010da <strong>login<\/strong> dinami\u010dna spremenljivka <code>token<\/code> posodabljala z novo vrednostjo iz odgovora. In ta spremenljivka bo shranjena v <strong>Projekt<\/strong> vozli\u0161\u010du in bo zahvaljujo\u010d dedovanju dostopna potomcem.<\/p>\n<p><\/p>\n<p>Da bi dostopali do dinami\u010dnih spremenljivk, je potrebno uporabiti <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">vgrajeno spremenljivko<\/a><\/noindex> <code>$dynamicVar<\/code>. Na primer, da pridemo do shranjenega \u017eetona, je potrebno poklicati <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">Prehodimo avtentikacijski \u017eeton v zahtevke<\/h2>\n<p><\/p>\n<p>Na prej\u0161njih korakih smo pridobili avtentikacijski \u017eeton in vse, kar moramo storiti, je dodati glavo <code>Authorization<\/code> s vrednostjo <code>Bearer<\/code> vse zahtevke, ki zahtevajo avtentikacijo, tudi v <strong>create-post<\/strong>. Za to obstaja ve\u010d na\u010dinov:<\/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>Izkoristite funkcionalnost <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">avtentikacije<\/a><\/noindex>.<\/li>\n<li>Uporabite <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">privzete glave<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Uporaba drugega na\u010dina se zdi o\u010ditna, vendar v kontekstu tega \u010dlanka tak pristop ... ni zanimiv. No, res: mehanizem avtentikacij je ve\u010d ali manj znan iz drugih orodij (\u010deprav imamo tudi stvari, kot so <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">dedovanje avtentikacij<\/a><\/noindex>) in verjetno ne bo povzro\u010dilo vpra\u0161anj. <\/p>\n<p><\/p>\n<p>Drugi problem su podrazumevani naslovi! Ukratko, podrazumevani naslovi su nasle\u0111eni HTTP naslovi koji se po defaultu dodaju u zahtev, osim ako ih izri\u010dito ne isklju\u010dimo. Ova funkcionalnost mo\u017ee se koristiti, na primer, za implementaciju prilago\u0111ene autorizacije ili jednostavno da se re\u0161i problem dupliranja u scenarijima. Iskoristimo ovu mogu\u0107nost za slanje tokena u naslovima.<\/p>\n<p><\/p>\n<p>Ranije smo pametno sa\u010duvali token u dinami\u010dkoj varijabli <code>$dynamicVar.token<\/code> na nivou Project \u010dvora. Preostaje da uradimo slede\u0107e:<\/p>\n<p><\/p>\n<ol>\n<li>Defini\u0161emo podrazumevani naslov <code>Authorization<\/code> z vrednostjo <code>Bearer ${$dynamicVar.token}<\/code> na nivou Project \u010dvora. Da bismo to uradili, u interfejsu Project \u010dvora potrebno je otvoriti dijalog sa podrazumevanim naslovima (dugme <strong>Headers<\/strong> u gornjem desnom uglu) i dodati odgovaraju\u0107i naslov. Dijalog sa popunjenim vrednostima izgledat \u0107e ovako:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Isklju\u010diti ovaj naslov iz login zahteva. To je jasno: u trenutku prijave jo\u0161 nemamo token i tim zahtevom ga zapravo postavljamo. Stoga u interfejsu login zahteva na kartici <strong>Headers<\/strong> u oblasti <strong>Inherited<\/strong> uklanjamo oznaku sa Authorization naslova. <\/li>\n<\/ol>\n<p><\/p>\n<p>To je to. Sada \u0107e se naslov za autorizaciju dodavati u sve zahteve koji su potomci Project \u010dvora, osim login \u010dvora. Tako da sada ve\u0107 imamo spreman scenario i preostaje nam samo da ga pokrenemo. Scenario se mo\u017ee pokrenuti izborom opcije <strong>Za\u017eeni<\/strong> u kontekstualnom meniju Project \u010dvora. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Proveravamo ta\u010dnost kreiranja posta<\/h2>\n<p><\/p>\n<p>U ovom trenutku na\u0161 scenario mo\u017ee da se prijavi, i, koriste\u0107i autorizacioni token, kreira post. Me\u0111utim, moramo se uveriti da novokreirani post ima ispravno ime. U su\u0161tini, jo\u0161 treba da uradimo slede\u0107e:<\/p>\n<p><\/p>\n<ul>\n<li>Po\u0161aljemo zahtev za dobijanje posta po id-u, <\/li>\n<li>Proverimo da ime koje je stiglo sa servera odgovara imenu koje je prosle\u0111eno prilikom kreiranja posta.<\/li>\n<\/ul>\n<p><\/p>\n<p>Razmotri\u0107emo prvi korak. Budu\u0107i da se vrednost id odre\u0111uje tokom izvo\u0111enja skripta, potrebno je kreirati dinami\u010dku varijablu (nazva\u0107emo je <code>postId<\/code>) iz \u010dvora <strong>create-post<\/strong> na nivou Project \u010dvora. Kako to uraditi ve\u0107 znamo, dovoljno je obratiti se odeljku <strong>Skladi\u0161timo token u promenljivu<\/strong>. Preostaje samo da kreiramo zahtev za dobijanje posta po ovom id-u. Za to \u0107emo kreirati RequestStep <strong>get-post<\/strong> sa slede\u0107im parametrima:<\/p>\n<p><\/p>\n<ul>\n<li>Tip zahteva: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>Za izvedbo drugega koraka se moramo spoznati z <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> vozli\u0161\u010dem. Assertion vozli\u0161\u010de \u2014 to je vozli\u0161\u010de, ki omogo\u010da pisanje preverjanj za dolo\u010dene poizvedbe. Vsako Assertion vozli\u0161\u010de lahko vsebuje ve\u010d trditev (preverjanj). Ve\u010d o vseh vrstah assertion-ov lahko preberete v na\u0161em <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumenti<\/a><\/noindex>. Uporabili bomo <code>Compare<\/code> assertion z operatorjem <code>equal<\/code>. Obstaja ve\u010d na\u010dinov za ustvarjanje assertion-ov:<\/p>\n<p><\/p>\n<ol>\n<li>Dolgotrajen. Ro\u010dno iz kontekstnega menija RequestStep vozli\u0161\u010da ustvarite Assertion vozli\u0161\u010de. V ustvarjenem Assertion vozli\u0161\u010du dodajte zanimiv assertion in izpolnite polja.<\/li>\n<li>Hitro. Ustvarite Assertion vozli\u0161\u010de skupaj z assertion-om iz odgovora RequestStep vozli\u0161\u010da s pomo\u010djo kontekstnega menija<\/li>\n<\/ol>\n<p><\/p>\n<p>U\u017eivajmo v drugem na\u010dinu. Tako bo to videti za na\u0161 primer.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Hiter za\u010detek\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Za tiste, ki niso razumeli, se tukaj dogaja naslednje:<\/p>\n<p><\/p>\n<ol>\n<li>Izvedite poizvedbo v vozli\u0161\u010du <strong>get-post<\/strong><\/li>\n<li>V zavihku <strong>Parsed<\/strong> odgovora, pokli\u010dite kontekstni meni in izberite <strong>Create assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Equal<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>\u010cestitam, ustvarili smo prvi test! Preprosto, kajne? Zdaj lahko za\u017eenete scenarij popolnoma in u\u017eivate v rezultatu. Ostaja \u0161e malo, da refaktorizirate in izpeljete <code>title<\/code> v lo\u010deno spremenljivko. Ampak to vam prepu\u0161\u010damo kot doma\u010do nalogo)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Zaklju\u010dek<\/h1>\n<p><\/p>\n<p>V tem priro\u010dniku smo ustvarili popoln scenarij in obenem pregledali nekatere funkcije na\u0161ega izdelka. Seveda nismo izkoristili vse funkcionalnosti in v naslednjih \u010dlankih bomo podrobneje obravnavali mo\u017enosti TestMace. Spremljajte novosti!<\/p>\n<p><\/p>\n<p>P.S. Za tiste, ki jim je lene ponavljati vse korake, smo prijazno pripravili <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repozitorij<\/a><\/noindex> s projektom iz \u010dlanka. Odpreti ga je mogo\u010de s pomo\u010djo <strong>Datoteka<\/strong> -&gt; <strong>Open project<\/strong> in izberite mapo Project.<\/p>\n<p>Izvor: <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\/sl\/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=\"sl_SI\" \/>\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\/sl\/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. Hiter za\u010detek | ProHoster","description":"Hello everyone.","canonical_url":"https:\/\/prohoster.info\/sl\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sl_SI","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\/sl\/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\/sl\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sl\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}