{"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\/sk\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. R\u00fdchly \u0161tart","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahojte v\u0161etci. Pomaly sa vraciame do hry a pokra\u010dujeme v s\u00e9rii \u010dl\u00e1nkov o na\u0161om produkte. Po <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">predch\u00e1dzaj\u00facej<\/a><\/noindex> preh\u013eadnej \u010dl\u00e1nku sme dostali mno\u017estvo sp\u00e4tn\u00fdch v\u00e4zieb (predov\u0161etk\u00fdm pozit\u00edvnych), n\u00e1vrhov a bug reportov. Dnes v\u00e1m uk\u00e1\u017eeme <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> v akcii a ocen\u00edte niektor\u00e9 funkcie na\u0161ej aplik\u00e1cie. Pre \u00fapln\u00e9 ponorenie sa odpor\u00fa\u010dam pozrie\u0165 na\u0161u dokument\u00e1ciu na adrese <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. Tak po\u010fme na to! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">In\u0161tal\u00e1cia<\/h1>\n<p><\/p>\n<p>Za\u010dneme s banalitami. Aplik\u00e1cia je dostupn\u00e1 a skuto\u010dne testovan\u00e1 na troch platform\u00e1ch \u2013 Linux, Windows, MacOS. M\u00f4\u017eete si stiahnu\u0165 in\u0161tala\u010dn\u00fd program pre zauj\u00edmav\u00fd OS z <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">na\u0161ej str\u00e1nky<\/a><\/noindex>. Pre linuxov\u00fdch u\u017e\u00edvate\u013eov je mo\u017enos\u0165 in\u0161tal\u00e1cie <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap bal\u00ed\u010dka<\/a><\/noindex>. D\u00fafame, \u017ee sa \u010doskoro dostaneme aj do Microsoft Store a App Store (je to potrebn\u00e9? \u010co si mysl\u00edte?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Testovac\u00ed sc\u00e9nar<\/h1>\n<p><\/p>\n<p>Pre n\u00e1\u0161 experiment sme vybrali nasleduj\u00faci \u0161tandardn\u00fd scen\u00e1r:<\/p>\n<p><\/p>\n<ul>\n<li>prihl\u00e1sime sa: pou\u017e\u00edvate\u013e \u2013 admin, heslo \u2013 password<\/li>\n<li>prid\u00e1me nov\u00fa polo\u017eku<\/li>\n<li>skontrolujeme spr\u00e1vne pridan\u00fa polo\u017eku<\/li>\n<\/ul>\n<p><\/p>\n<p>Testova\u0165 budeme na <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. Je to be\u017en\u00fd <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, ktor\u00fd je v\u00fdborne vhodn\u00fd na testovanie podobn\u00fdch aplik\u00e1ci\u00ed. Iba sme pridali autoriz\u00e1ciu pomocou tokenu na v\u0161etky trasy json-server-a a vytvorili met\u00f3du login na z\u00edskanie tohto tokenu. Budeme pokra\u010dova\u0165 systematicky, postupne zdokona\u013eujeme n\u00e1\u0161 projekt.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Vytvorenie projektu a pokus o vytvorenie entity bez autoriz\u00e1cie<\/h2>\n<p><\/p>\n<p>Na za\u010diatok vytvor\u00edme nov\u00fd projekt (<strong>File<\/strong>-&gt;<strong>Nov\u00fd projekt<\/strong>). Ak sp\u00fa\u0161\u0165ate aplik\u00e1ciu po prv\u00fd raz, nov\u00fd projekt sa otvor\u00ed automaticky. Najprv sa pok\u00fasime vykona\u0165 po\u017eiadavku na vytvorenie novej polo\u017eky (mo\u017eno \u017ee vytv\u00e1ranie polo\u017eiek je dostupn\u00e9 bez autoriz\u00e1cie). Vyberte v kontextovej ponuke uzla Project polo\u017eky <strong>Prida\u0165 uzol<\/strong> -&gt; <strong>RequestStep<\/strong>. Ako n\u00e1zov uzla zadajte <strong>create-post<\/strong>. V d\u00f4sledku toho sa v strome vytvor\u00ed nov\u00fd uzol a otvor\u00ed sa karta tohto uzla. Nastav\u00edme nasleduj\u00face parametre po\u017eiadavky:<\/p>\n<p><\/p>\n<ul>\n<li>Typ po\u017eiadavky: 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 po\u017eiadavky: json s hodnotou <code>{\"title\": \"New testmace quick start post\"}<\/code><br \/>\nAk ste v\u0161etko urobili spr\u00e1vne, rozhranie bude vyzera\u0165 takto:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ale ak sa pok\u00fasime vykona\u0165 po\u017eiadavku, server vr\u00e1ti k\u00f3d 401 a bez autoriz\u00e1cie na tomto serveri ni\u010d nez\u00edska. No, v podstate o\u010dak\u00e1van\u00e9).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Pridanie po\u017eiadavky na autoriz\u00e1ciu<\/h2>\n<p><\/p>\n<p>Ako u\u017e bolo povedan\u00e9, m\u00e1me POST endpoint <code>\/login<\/code>, ktor\u00fd prij\u00edma ako telo po\u017eiadavky json typu: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, kde <code>username<\/code> a <code>password<\/code> (op\u00e4\u0165, z \u00favodn\u00e9ho textu vy\u0161\u0161ie) maj\u00fa v\u00fdznamy <code>admin<\/code> a <code>password<\/code> prisl\u00fachaj\u00faco. V odpovedi tento endpoint vracia JSON vo forme <code>{\"token\": \"\"}<\/code>. Vyu\u017eijeme ho na autoriz\u00e1ciu. Vytvor\u00edme <strong>RequestStep<\/strong> uzol s n\u00e1zvom <strong>login<\/strong>, ako predok bude vystupova\u0165 <strong>Projekt<\/strong> uzol. Pomocou funkcie drag-and-drop presu\u0148te tento uzol v hierarchii nad uzol <strong>create-post<\/strong>. Novovytvoren\u00e9mu po\u017eiadavku nastav\u00edme nasleduj\u00face parametre:<\/p>\n<p><\/p>\n<ul>\n<li>Typ po\u017eiadavky: 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 po\u017eiadavky: json s hodnotou <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Vykon\u00e1me po\u017eiadavok a dostaneme dvesto k\u00f3d s tokenom v odpovedi. Takto nejako:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" 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\">Refaktoring: odstra\u0148ujeme duplicitu dom\u00e9ny<\/h2>\n<p><\/p>\n<p>Zatia\u013e po\u017eiadavky nie s\u00fa prepojen\u00e9 do jedn\u00e9ho scen\u00e1ra. Ale to nie je jedin\u00e1 nev\u00fdhoda. Ak sa pozrieme pozorne, m\u00f4\u017eeme si v\u0161imn\u00fa\u0165, \u017ee minim\u00e1lne dom\u00e9na je duplikovan\u00e1 v oboch po\u017eiadavk\u00e1ch. Nepr\u00edjemn\u00e9. Je \u010das refaktorova\u0165 t\u00fato \u010das\u0165 bud\u00faceho scen\u00e1ra a v tom n\u00e1m pom\u00f4\u017eu premenn\u00e9.<\/p>\n<p><\/p>\n<p>Na prv\u00fd poh\u013ead premenn\u00e9 vykon\u00e1vaj\u00fa rovnak\u00fa \u00falohu ako v in\u00fdch podobn\u00fdch n\u00e1strojoch a programovac\u00edch jazykoch \u2013 odstra\u0148uj\u00fa duplicity, zvy\u0161uj\u00fa \u010ditate\u013enos\u0165 at\u010f. Viac o premenn\u00fdch si m\u00f4\u017eete pre\u010d\u00edta\u0165 v <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">na\u0161ej dokument\u00e1cii<\/a><\/noindex>. V tomto pr\u00edpade potrebujeme pou\u017e\u00edvate\u013esk\u00e9 premenn\u00e9. <\/p>\n<p><\/p>\n<p>Definujeme na \u00farovni projektu uzla premenn\u00fa <code>domain<\/code> s hodnotou <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. Na to je potrebn\u00e9<\/p>\n<p><\/p>\n<ul>\n<li>Otvor\u00edme kartu s t\u00fdmto uzlom a klikneme na ikonu kalkula\u010dky vpravo hore<\/li>\n<li>Kliknite na <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>Zadajte n\u00e1zov a hodnotu premennej<br \/>\nV na\u0161om pr\u00edpade bude dial\u00f3g s pridanou premennou vyzera\u0165 takto:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. Teraz v\u010faka dedi\u010dnosti m\u00f4\u017eeme t\u00fato premenn\u00fa pou\u017e\u00edva\u0165 v potomkoch ak\u00e9hoko\u013evek \u00farovne zlo\u017eenia. V na\u0161om pr\u00edpade s\u00fa to uzly <strong>login<\/strong> a <strong>create-post<\/strong>. Na to, aby sme v textovom poli pou\u017eili premenn\u00fa, je potrebn\u00e9 nap\u00edsa\u0165 <code>${}<\/code>. Napr\u00edklad, URL pre prihl\u00e1senie sa premen\u00ed na <code>${domain}\/login<\/code>, pri\u010dom pre <strong>create-post<\/strong> uzol URL bude vyzera\u0165 ako <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>T\u00fdmto sp\u00f4sobom, riadiac sa z\u00e1sadou DRY, sme trochu vylep\u0161ili sc\u00e9nar.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Ulo\u017e\u00edme token do premennej<\/h2>\n<p><\/p>\n<p>Ke\u010f\u017ee sme otvorili diskusiu o premenn\u00fdch, po\u010fme sa tejto t\u00e9me venova\u0165 trochu viac. V s\u00fa\u010dasnosti, ak sa prihl\u00e1senie uskuto\u010dn\u00ed \u00faspe\u0161ne, dostaneme od servera autentifika\u010dn\u00fd token, ktor\u00fd bude potrebn\u00fd v nasleduj\u00facich po\u017eiadavk\u00e1ch. Ulo\u017eme tento token do premennej. Ke\u010f\u017ee hodnota premennej sa ur\u010duje po\u010das vykon\u00e1vania scen\u00e1ra, pou\u017eijeme na to \u0161peci\u00e1lny mechanizmus \u2013 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">dynamick\u00e9 premenn\u00e9<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Na za\u010diatok vykon\u00e1me po\u017eiadavku na prihl\u00e1senie. Vo \u0432\u043a\u043b\u0430\u0434ke <strong>Parsed<\/strong> Prejdite kurzorom nad token a v kontextovej ponuke (ktor\u00e1 sa vyvol\u00e1 bu\u010f prav\u00fdm tla\u010didlom my\u0161i, alebo stla\u010den\u00edm tla\u010didla &#8230;) vyberte polo\u017eku <strong>Priradi\u0165 k premennej<\/strong>. Objav\u00ed sa dial\u00f3g s nasleduj\u00facimi poliami:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Cesta<\/strong> \u2014 ktor\u00fd k\u00fasok odpovede sa berie (v na\u0161om pr\u00edpade je to <code>body.token<\/code>)<\/li>\n<li><strong>Aktu\u00e1lna hodnota<\/strong> \u2014 ak\u00e1 hodnota le\u017e\u00ed pod\u013ea cesty Cesta (v na\u0161om pr\u00edpade je to hodnota tokenu)<\/li>\n<li><strong>N\u00e1zov premennej<\/strong> \u2014 n\u00e1zov premennej, kde <strong>Aktu\u00e1lna hodnota<\/strong> sa bude uklada\u0165. V na\u0161om pr\u00edpade to bude <code>token<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 v ktorom z predkov sa vytvor\u00ed premenn\u00e1 <strong>N\u00e1zov premennej<\/strong>. Vyberieme Projekt<\/li>\n<\/ul>\n<p><\/p>\n<p>Vyplnen\u00fd dial\u00f3g vyzer\u00e1 nasledovne:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Teraz pri ka\u017edom vykonan\u00ed uzla <strong>login<\/strong> dynamick\u00e1 premenn\u00e1 <code>token<\/code> sa bude aktualizova\u0165 novou hodnotou z odpovede. A t\u00e1to premenn\u00e1 bude ulo\u017een\u00e1 v <strong>Projekt<\/strong> uzle a v\u010faka dedeniu bude dostupn\u00e1 potomkom.<\/p>\n<p><\/p>\n<p>Aby ste sa mohli obr\u00e1ti\u0165 na dynamick\u00e9 premenn\u00e9, je potrebn\u00e9 pou\u017ei\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">vstavan\u00fa premenn\u00fa<\/a><\/noindex> <code>$dynamicVar<\/code>. Napr\u00edklad, aby ste sa dostali k ulo\u017een\u00e9mu tokenu, je potrebn\u00e9 zavola\u0165 <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">Posielame autoriza\u010dn\u00fd token v po\u017eiadavk\u00e1ch<\/h2>\n<p><\/p>\n<p>Na predch\u00e1dzaj\u00facich krokoch sme z\u00edskali autoriza\u010dn\u00fd token a v\u0161etko, \u010do je potrebn\u00e9 urobi\u0165, je prida\u0165 hlavi\u010dku <code>Authorization<\/code> s hodnotou <code>Bearer<\/code> do v\u0161etk\u00fdch po\u017eiadaviek, ktor\u00e9 vy\u017eaduj\u00fa autoriz\u00e1ciu, vr\u00e1tane v <strong>create-post<\/strong>. Na to existuje nieko\u013eko sp\u00f4sobov:<\/p>\n<p><\/p>\n<ol>\n<li>Ru\u010dne skop\u00edrujte token a pridajte autoriza\u010dn\u00fa hlavi\u010dku do po\u017eadovan\u00fdch dopytov. Tento sp\u00f4sob je funk\u010dn\u00fd, av\u0161ak jeho pou\u017eitie je obmedzen\u00e9 iba na dopyty typu &#171;urobil a vyhodil&#187;. Na opakovan\u00e9 vykon\u00e1vanie scen\u00e1rov nie je vhodn\u00fd.<\/li>\n<li>Vyu\u017ei\u0165 funkciu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">autoriz\u00e1cie<\/a><\/noindex>.<\/li>\n<li>Pou\u017ei\u0165 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">predvolen\u00e9 hlavi\u010dky<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Pou\u017eitie druh\u00e9ho sp\u00f4sobu sa zd\u00e1 zrejm\u00e9, av\u0161ak v kontexte tohto \u010dl\u00e1nku sa tak\u00fdto pr\u00edstup\u2026 nezd\u00e1 by\u0165 zauj\u00edmav\u00fd. Nu\u017e, naozaj: mechanizmus autoriz\u00e1cie je v\u00e1m plus m\u00ednus zn\u00e1my z in\u00fdch n\u00e1strojov (hoci m\u00e1me aj tak\u00e9 veci ako <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">dedenie autoriz\u00e1cie<\/a><\/noindex>) a pravdepodobne nevyvol\u00e1 ot\u00e1zky. <\/p>\n<p><\/p>\n<p>In\u00e9 s\u00fa veci predvolen\u00e9 hlavi\u010dky! Jednoducho povedan\u00e9, predvolen\u00e9 hlavi\u010dky s\u00fa dedi\u010dn\u00e9 z rodi\u010dovsk\u00fdch HTTP hlavi\u010diek, ktor\u00e9 sa automaticky prid\u00e1vaj\u00fa k po\u017eiadavke, pokia\u013e nie s\u00fa v\u00fdslovne vypnut\u00e9. S touto funkciou m\u00f4\u017eeme napr\u00edklad implementova\u0165 vlastn\u00fa autoriz\u00e1ciu alebo sa jednoducho zbavi\u0165 duplicity v scen\u00e1roch. T\u00fato funkciu pou\u017eijeme na posielanie tokenu v hlavi\u010dk\u00e1ch.<\/p>\n<p><\/p>\n<p>Predt\u00fdm sme si opatrne ulo\u017eili token do dynamickej premennej <code>$dynamicVar.token<\/code> na \u00farovni Project uzla. Ost\u00e1va spravi\u0165 nasleduj\u00face:<\/p>\n<p><\/p>\n<ol>\n<li>Ur\u010di\u0165 predvolen\u00fa hlavi\u010dku <code>Authorization<\/code> s hodnotou <code>Bearer ${$dynamicVar.token}<\/code> na \u00farovni Project uzla. Na to je potrebn\u00e9 v rozhran\u00ed Project uzla otvori\u0165 dial\u00f3g s predvolen\u00fdmi hlavi\u010dkami (tla\u010didlo <strong>Headers<\/strong> v pravom hornom rohu) a prida\u0165 pr\u00edslu\u0161n\u00fa hlavi\u010dku. Dial\u00f3g so vyplnen\u00fdmi hodnotami bude vyzera\u0165 nasledovne:<br \/>\n<img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Vypn\u00fa\u0165 t\u00fato hlavi\u010dku z login po\u017eiadavky. To je jasn\u00e9: v momente prihl\u00e1senia e\u0161te nem\u00e1me token a touto po\u017eiadavkou ho pr\u00e1ve nastav\u00edme. Preto v rozhran\u00ed login po\u017eiadavky na karte <strong>Headers<\/strong> v oblasti <strong>Inherited<\/strong> od\u0161krtneme pol\u00ed\u010dko pri hlavi\u010dke Authorization. <\/li>\n<\/ol>\n<p><\/p>\n<p>Na tom v\u0161etkom. Teraz sa hlavi\u010dka autoriz\u00e1cie prid\u00e1 do v\u0161etk\u00fdch po\u017eiadaviek, ktor\u00e9 s\u00fa potomkami Project uzla, okrem login uzla. Vyzer\u00e1 to tak, \u017ee v tejto f\u00e1ze u\u017e m\u00e1me pripraven\u00fd scen\u00e1r a ost\u00e1va len to spusti\u0165. Scen\u00e1r m\u00f4\u017eeme spusti\u0165 zvolen\u00edm polo\u017eky <strong>Spusti\u0165<\/strong> v kontextovom menu Project uzla. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Kontrolujeme spr\u00e1vnos\u0165 vytvorenia pr\u00edspevku<\/h2>\n<p><\/p>\n<p>V tejto f\u00e1ze n\u00e1\u0161 scen\u00e1r vie prihlasova\u0165 a, pomocou autoriza\u010dn\u00e9ho tokenu, vytv\u00e1ra\u0165 pr\u00edspevky. Av\u0161ak mus\u00edme sa uisti\u0165, \u017ee novo vytvoren\u00fd pr\u00edspevok m\u00e1 spr\u00e1vne meno. V podstate ost\u00e1va spravi\u0165 nasleduj\u00face:<\/p>\n<p><\/p>\n<ul>\n<li>Posla\u0165 po\u017eiadavku na z\u00edskanie pr\u00edspevku pod\u013ea id, <\/li>\n<li>Skontrolova\u0165, \u017ee meno odoslan\u00e9 zo servera zodpoved\u00e1 menu, ktor\u00e9 bolo zaslan\u00e9 pri vytv\u00e1ran\u00ed pr\u00edspevku.<\/li>\n<\/ul>\n<p><\/p>\n<p>Pozrime sa na prv\u00fd krok. Ke\u010f\u017ee hodnota id sa ur\u010duje po\u010das vykon\u00e1vania skriptu, je potrebn\u00e9 vytvori\u0165 dynamick\u00fa premenn\u00fa (nazvime ju <code>postId<\/code>) z uzla <strong>create-post<\/strong> na \u00farovni Project uzla. Ako to urobi\u0165 u\u017e vieme, sta\u010d\u00ed sa obrati\u0165 na sekciu <strong>Ulo\u017e\u00edme token do premennej<\/strong>. Ost\u00e1va len vytvori\u0165 po\u017eiadavku na z\u00edskanie pr\u00edspevku pod\u013ea tohto id. Na to vytvor\u00edme RequestStep <strong>get-post<\/strong> s nasleduj\u00facimi parametrami:<\/p>\n<p><\/p>\n<ul>\n<li>Typ po\u017eiadavky: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>Na uskuto\u010dnenie druh\u00e9ho kroku sa mus\u00edme zozn\u00e1mi\u0165 s <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> uzlom. Assertion uzol je uzol, ktor\u00fd umo\u017e\u0148uje p\u00edsa\u0165 kontroly na ur\u010dit\u00e9 po\u017eiadavky. Ka\u017ed\u00fd Assertion uzol m\u00f4\u017ee obsahova\u0165 nieko\u013eko tvrden\u00ed (kontrol). Viac o v\u0161etk\u00fdch typoch assertion-ov sa dozviete v na\u0161om <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumen\u00e1cie<\/a><\/noindex>. Budeme pou\u017e\u00edva\u0165 <code>Compare<\/code> assertion s oper\u00e1torom <code>equal<\/code>. Existuje nieko\u013eko sp\u00f4sobov tvorby assertion-ov:<\/p>\n<p><\/p>\n<ol>\n<li>Dlh\u00fd. Ru\u010dne z kontextov\u00e9ho menu uzla RequestStep vytvori\u0165 uzol Assertion. Vytvorenom Assertion uzle prida\u0165 zauj\u00edmaj\u00faci assertion a vyplni\u0165 polia.<\/li>\n<li>R\u00fdchly. Vytvori\u0165 uzol Assertion spolu s assertion-om z odpovede uzla RequestStep pomocou kontextov\u00e9ho menu.<\/li>\n<\/ol>\n<p><\/p>\n<p>Vyu\u017eijeme druh\u00fd sp\u00f4sob. Takto to bude vyzera\u0165 pre n\u00e1\u0161 pr\u00edpad.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. R\u00fdchly \u0161tart\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pre t\u00fdch, ktor\u00ed tomu nerozumej\u00fa, tu sa deje nasledovn\u00e9:<\/p>\n<p><\/p>\n<ol>\n<li>Vykona\u0165 po\u017eiadavku v uzle <strong>get-post<\/strong><\/li>\n<li>Na karte <strong>Parsed<\/strong> odpovede vyvola\u0165 kontextov\u00e9 menu a vybra\u0165 <strong>Create assertion<\/strong> -&gt; <strong>Compare<\/strong> -&gt; <strong>Equal<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Gratulujem, vytvorili sme prv\u00fd test! Jednoduch\u00e9, v\u0161ak? Teraz m\u00f4\u017eete spusti\u0165 skript \u00faplne a u\u017e\u00edva\u0165 si v\u00fdsledok. Ost\u00e1va iba trocha refaktorova\u0165 a vynies\u0165 <code>title<\/code> do samostatnej premennej. Ale toto nech\u00e1me na v\u00e1s ako dom\u00e1cu \u00falohu)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Z\u00e1ver<\/h1>\n<p><\/p>\n<p>V tejto pr\u00edru\u010dke sme vytvorili plnohodnotn\u00fd skript a z\u00e1rove\u0148 sa zaoberali niektor\u00fdmi funkciami n\u00e1\u0161ho produktu. Samozrejme, vyu\u017eili sme \u010faleko nie v\u0161etky funkcie a v nasleduj\u00facich \u010dl\u00e1nkoch priprav\u00edme podrobn\u00fd preh\u013ead mo\u017enost\u00ed TestMace. Sledujte aktualiz\u00e1cie!<\/p>\n<p><\/p>\n<p>P.S. Pre t\u00fdch, ktor\u00ed s\u00fa leniv\u00ed opakova\u0165 v\u0161etky kroky, sme ochotne pripravili <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">repozit\u00e1r<\/a><\/noindex> s projektom z \u010dl\u00e1nku. Otvori\u0165 ho m\u00f4\u017eete pomocou <strong>File<\/strong> -&gt; <strong>Open project<\/strong> a vybra\u0165 prie\u010dinok Project.<\/p>\n<p>Zdroj: <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.5 - 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\/sk\/blog\/news\/testmace-bystryj-start\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\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\/sk\/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. R\u00fdchly \u0161tart | ProHoster","description":"Ahojte v\u0161etci.","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","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\/sk\/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\/sk\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}