{"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\/et\/blog\/news\/testmace-bystryj-start","title":{"rendered":"TestMace. Kiire algus","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"TestMace. Kiire algus\" src=\"\/wp-content\/uploads\/2019\/12\/ca19545f1cc06814a69a6a3e6d9f3a5a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tere k\u00f5ik. Me hakkame tasapisi varjust v\u00e4lja tulema ja j\u00e4tkame artiklisarja meie toote kohta. P\u00e4rast <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">kontrolli. Sel ajal on C++ anal\u00fcsaatorisse lisatud kokku 66 \u00fcldotstarbelist diagnoosi.<\/a><\/noindex> \u00fclevaateartiklit saime hulgaliselt tagasisidet (peamiselt positiivset), ettepanekuid ja bugi raporteid. T\u00e4na n\u00e4itame <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex> kuidas see t\u00f6\u00f6tab ja teil on v\u00f5imalus hinnata m\u00f5ningaid meie rakenduse funktsioone. Rohkemate \u00fcksikasjade jaoks soovitan vaadata meie dokumentatsiooni aadressil <noindex><a rel=\"nofollow\" href=\"http:\/\/docs-ru.testmace.com\">http:\/\/docs-ru.testmace.com<\/a><\/noindex>. Nii, hakkame pihta! <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"ustanovka\">Paigaldamine<\/h1>\n<p><\/p>\n<p>Alustame lihtsate asjadega. Rakendus on saadaval ja tegelikult testitav kolmel platvormil \u2014 Linux, Windows, MacOS. Saate huvipakkuva ops\u00fcsteemi paigaldusteenuse alla laadida <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">meie veebilehelt<\/a><\/noindex>. Linuxi kasutajatele on olemas v\u00f5imalus installida <noindex><a rel=\"nofollow\" href=\"https:\/\/snapcraft.io\/testmace\">snap-paketti<\/a><\/noindex>. Loodame, et peagi j\u00f5uab k\u00fclastus Microsoft Store'i ja App Store'i (aga kas on seda vaja? Mis arvate?).<\/p>\n<p><\/p>\n<h1 id=\"podopytnyy-scenariy\">Katse stsenaarium<\/h1>\n<p><\/p>\n<p>Katses osalevaks stsenaariumiks valisime j\u00e4rgmise standardsenaariumi:<\/p>\n<p><\/p>\n<ul>\n<li>logime sisse: kasutaja \u2014 admin, parool \u2014 password<\/li>\n<li>lisame uue kirje<\/li>\n<li>kontrollime kirje korrektset lisamist<\/li>\n<\/ul>\n<p><\/p>\n<p>Testime seda <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace-quick-start.herokuapp.com\/\">https:\/\/testmace-quick-start.herokuapp.com\/<\/a><\/noindex>. See on tavaline <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/typicode\/json-server\">json-server<\/a><\/noindex>, mis sobib suurep\u00e4raselt sarnaste rakenduste testimiseks. Me lisasime ainult autoriseerimise tokeni k\u00f5ikidele json-serveri marsruutidele ja tegime login meetodi selle tokeni saamiseks. Liikume samm-sammult, pidevalt t\u00e4iustades meie projekti.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-proekta-i-popytka-sozdat-suschnost-bez-avtorizacii\">Projekti loomine ja katsed luua \u00fcksus ilma autoriseerimiseta<\/h2>\n<p><\/p>\n<p>Alustame uue projekti loomisega (<strong>Fail<\/strong>-&gt;<strong>Uus projekt<\/strong>). Kui avate rakenduse esmakordselt, avatakse uus projekt automaatselt. Alustuseks proovime teha p\u00e4ringu uue kirje loomiseks (j\u00e4rsku on kirje loomine saadaval ilma autoriseerimiseta). Valige kontekstimen\u00fc\u00fcst Project s\u00f5lme punktid <strong>Lisa s\u00f5lm<\/strong> -&gt; <strong>RequestStep<\/strong>. S\u00f5lme nimeks m\u00e4\u00e4rame <strong>create-post<\/strong>. Tulemusena luuakse puus uus s\u00f5lm ja avatakse selle s\u00f5lme vahekaart. M\u00e4\u00e4rame p\u00e4ringu j\u00e4rgmised parameetrid:<\/p>\n<p><\/p>\n<ul>\n<li>P\u00e4ringu t\u00fc\u00fcp: 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>P\u00e4ringu sisu: json v\u00e4\u00e4rtusega <code>{\"title\": \"Uus testmace kiire algus postitus\"}<\/code><br \/>\nKui k\u00f5ik teete \u00f5igesti, n\u00e4eb liides v\u00e4lja j\u00e4rgmiselt:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Kiire algus\" src=\"\/wp-content\/uploads\/2019\/12\/a5c81dc4977dd73a4975643bf8ced3da.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kuid kui proovime p\u00e4ringut teostada, tagastab server 401 koodi ja ilma autoriseerimiseta ei saa me sellele serverile midagi teha. Noh, see oli enam-v\u00e4hem oodatav).<\/p>\n<p><\/p>\n<h2 id=\"dobavlyaem-zapros-na-avtorizaciyu\">Lisame autoriseerimis p\u00e4ringu<\/h2>\n<p><\/p>\n<p>Kuidas juba \u00f6eldi, meil on POST l\u00f5pp-punkt <code>\/login<\/code>, mis aktsepteerib p\u00e4ringu keha json kujul: <code>{\"username\": \"\", \"password\": \"\"}<\/code>, kus <code>username<\/code> ja <code>parool<\/code> (taas, nagu eelnevas sissejuhatuses) omavad v\u00e4\u00e4rtusi <code>admin<\/code> ja <code>parool<\/code> vastavalt. Antud endpoint tagastab json vormingus <code>{\"token\": \"\"}<\/code>. Kasutame seda autentimiseks. Loome <strong>RequestStep<\/strong> s\u00f5lme nimega <strong>login<\/strong>, vanemana toimib <strong>Projekt<\/strong> s\u00f5lm. Asetage see s\u00f5lm puu struktuuris \u00fclemisele tasemele, kui s\u00f5lm <strong>create-post<\/strong>. Seadistame uuele p\u00e4ringule j\u00e4rgmised parameetrid:<\/p>\n<p><\/p>\n<ul>\n<li>P\u00e4ringu t\u00fc\u00fcp: 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>P\u00e4ringu sisu: json v\u00e4\u00e4rtusega <code>{\"username\": \"admin\", \"password\": \"password\"}<\/code><\/li>\n<\/ul>\n<p><\/p>\n<p>Teeme p\u00e4ringu ja saame vastuseks 200. koodi koos tokeniga. Umbes nii:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Kiire algus\" 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\">Refaktoreerimine: eemaldame domeeni dubleerimise<\/h2>\n<p><\/p>\n<p>Praegu ei ole p\u00e4ringud \u00fchte stsenaariumi seotud. Kuid see pole ainus puudus. Kui t\u00e4helepanelikult vaadata, siis v\u00f5ib m\u00e4rgata, et domeen dubleeritakse m\u00f5lemas p\u00e4ringus. Ei ole hea. On aeg refaktoreerida see osa tulevasest stsenaariumist ja selle jaoks aitavad meid muutujad.<\/p>\n<p><\/p>\n<p>Alguses t\u00e4idavad muutujad samu \u00fclesandeid nagu teistes sarnastes t\u00f6\u00f6riistades ja programmeerimiskeeltes \u2014 dubleerimise v\u00e4ltimine, loetavuse parandamine jne. Rohkem muutujatest saab lugeda <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\">meie dokumentatsioonist<\/a><\/noindex>. Antud juhul vajame kasutaja m\u00e4\u00e4ratud muutujaid. <\/p>\n<p><\/p>\n<p>M\u00e4\u00e4ratleme Project tasemel s\u00f5lme muutuja <code>domain<\/code> v\u00e4\u00e4rtusega <code>https:\/\/testmace-quick-start.herokuapp.com<\/code>. Selleks on vajalik<\/p>\n<p><\/p>\n<ul>\n<li>Avage antud s\u00f5lme vahekaart ja vajutage paremal \u00fcleval nurgas olevale kalkulaatori ikoonile<\/li>\n<li>Vajutage <strong>+ ADD VARIABLE<\/strong><\/li>\n<li>Sisestage muutuja nimi ja v\u00e4\u00e4rtus<br \/>\nMeie juhul n\u00e4eb dialoog koos lisatud muutujaga v\u00e4lja j\u00e4rgmine:<\/li>\n<\/ul>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Kiire algus\" src=\"\/wp-content\/uploads\/2019\/12\/071ac6dca2c5a49b78b11719fae5f650.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>OK. N\u00fc\u00fcd t\u00e4nu p\u00e4rimisele saame kasutada seda muutujat mis tahes taseme j\u00e4reltulijates. Meie olukorras on need s\u00f5lmed <strong>login<\/strong> ja <strong>create-post<\/strong>. Selleks, et tekstiv\u00e4ljas kasutada muutujat, tuleb kirjutada <code>${}<\/code>. N\u00e4iteks, url sisselogimiseks muutub <code>${domain}\/login<\/code>, vastavalt <strong>create-post<\/strong> s\u00f5lmele url n\u00e4eb v\u00e4lja nagu <code>${domain}\/posts<\/code>.<\/p>\n<p><\/p>\n<p>Nii oleme, j\u00e4rgides DRY printsiipi, veidi parandanud stsenaariumi.<\/p>\n<p><\/p>\n<h2 id=\"sohranyaem-token-v-peremennuyu\">Salvestame tokeni muutuja<\/h2>\n<p><\/p>\n<p>Kuna jutt on muutujatest, arendame seda teemat veidi. Praegu saame eduka sisselogimise korral serverilt autentimistokeni, mida vajame edasistes p\u00e4ringutes. Salvestame selle tokeni muutujasse. Kuna muutuja v\u00e4\u00e4rtus m\u00e4\u00e4ratakse stsenaariumi t\u00e4itmise ajal, kasutame selleks erilist mehhanismi \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/user-variables\/dynamic-variables\">d\u00fcnaamilised muutujad<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Alustame sisselogimise p\u00e4ringuga. Vahekaardil <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>Assign to variable<\/strong>. Avaneb dialoog j\u00e4rgmiste v\u00e4ljadega:<\/p>\n<p><\/p>\n<ul>\n<li><strong>Path<\/strong> \u2014 milline osa vastusest v\u00f5etakse (meie juhul see on <code>body.token<\/code>)<\/li>\n<li><strong>Praegune v\u00e4\u00e4rtus<\/strong> \u2014 milline v\u00e4\u00e4rtus asub teel Path (meie juhul see on tunnuse v\u00e4\u00e4rtus)<\/li>\n<li><strong>Variable name<\/strong> \u2014 muutuja nimi, kuhu <strong>Praegune v\u00e4\u00e4rtus<\/strong> see salvestatakse. Meie puhul on see <code>token<\/code><\/li>\n<li><strong>Node<\/strong> \u2014 millises eelk\u00e4ijas muutuja luuakse <strong>Variable name<\/strong>. Valime Project<\/li>\n<\/ul>\n<p><\/p>\n<p>T\u00e4idetud dialoog n\u00e4eb v\u00e4lja selline:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Kiire algus\" src=\"\/wp-content\/uploads\/2019\/12\/f524934dd1a4cb238afb6666135b360b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd v\u00e4rskendatakse iga kord s\u00f5lme t\u00e4itmist <strong>login<\/strong> d\u00fcnaamiline muutuja <code>token<\/code> uue v\u00e4\u00e4rtusega vastusest. Ja see muutuja salvestatakse <strong>Projekt<\/strong> s\u00f5lmes ja t\u00e4nu p\u00e4rimisele on see k\u00e4ttesaadav j\u00e4rglastele.<\/p>\n<p><\/p>\n<p>D\u00fcnaamilistele muutujatele viitamiseks peate kasutama <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/variables\/variables\">sisseehitatud muutujat<\/a><\/noindex> <code>$dynamicVar<\/code>. N\u00e4iteks, et p\u00e4\u00e4seda salvestatud tokenile, tuleb kutsuda <code>${$dynamicVar.token}<\/code>.<\/p>\n<p><\/p>\n<h2 id=\"prokidyvaem-avtorizacionnyy-token-v-zaprosy\">Kandke volitustoken k\u00f5igisse p\u00e4ringutesse<\/h2>\n<p><\/p>\n<p>Eelmistes etappides oleme saanud volitustokeni ja k\u00f5ik, mis peate tegema, on lisada p\u00e4is <code>Authorization<\/code> v\u00e4\u00e4rtusega <code>Bearer<\/code> k\u00f5igisse volitust n\u00f5udvatesse p\u00e4ringutesse, sealhulgas ka <strong>create-post<\/strong>. Selleks on mitmeid v\u00f5imalusi:<\/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>Kasuta funktsionaalsust <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization\">volitamiseks<\/a><\/noindex>.<\/li>\n<li>Kasutage <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">vaikimisi p\u00e4ised<\/a><\/noindex><\/li>\n<\/ol>\n<p><\/p>\n<p>Teise meetodi kasutamine tundub ilmselge, kuid antud artikli kontekstis on see l\u00e4henemine\u2026 ebahuvitav. T\u00f5epoolest: volituste mehhanism on teile teiste t\u00f6\u00f6riistade kaudu enam-v\u00e4hem tuttav (isegi kui meil on sellised asjad nagu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/work-with\/authorization#inherit-from-parent\">volituste p\u00e4rimine<\/a><\/noindex>) ja ei tundu t\u00f5en\u00e4oliselt k\u00fcsimusi tekitavat. <\/p>\n<p><\/p>\n<p>Teine asi on vaikimisi p\u00e4ised! Kui l\u00fchidalt \u00f6elda, siis vaikimisi p\u00e4ised on eelk\u00e4ijatest p\u00e4rinud HTTP-p\u00e4ised, mis lisatakse p\u00e4ringule vaikimisi, kui neid ei keelata. Selle funktsiooni abil saab n\u00e4iteks rakendada kohandatud autentimist v\u00f5i lihtsalt vabaneda kordusest stsenaariumites. Rakendame seda funktsiooni tokeni edasiviimiseks p\u00e4istes.<\/p>\n<p><\/p>\n<p>Varasemalt oleme ettevaatlikult salvestanud tokeni d\u00fcnaamilisse muutuja <code>$dynamicVar.token<\/code> Projektis\u00f5lme tasemel. Tuleb teha j\u00e4rgmist:<\/p>\n<p><\/p>\n<ol>\n<li>M\u00e4\u00e4rata vaikimisi pealkiri <code>Authorization<\/code> v\u00e4\u00e4rtusega <code>Bearer ${$dynamicVar.token}<\/code> Projektis\u00f5lme tasemel. Selle tegemiseks tuleb avada vaikimisi pealkirjade dialoog (nupp <strong>Pealkirjad<\/strong> paremas \u00fclanurgas) ja lisada vastav pealkiri. Dialoog, kus v\u00e4\u00e4rtused on t\u00e4idetud, n\u00e4eb v\u00e4lja j\u00e4rgmiselt:<br \/>\n<img decoding=\"async\" alt=\"TestMace. Kiire algus\" src=\"\/wp-content\/uploads\/2019\/12\/9abd888cbf96e53b633e8f0fd3389297.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/li>\n<li>Kehitada see pealkiri v\u00e4lja login p\u00e4ringust. See on arusaadav: sisselogimise hetkel ei ole meil veel tokenit ja sellega me just sellele p\u00e4ringule kehtestamegi selle. Seega login p\u00e4ringu liideses vahemikus <strong>Pealkirjad<\/strong> ala <strong>P\u00e4ritatud<\/strong> v\u00f5tame Authorization pealkirjast linnukese maha. <\/li>\n<\/ol>\n<p><\/p>\n<p>Sellega on k\u00f5ik. N\u00fc\u00fcd lisatakse autoriseerimise pealkiri k\u00f5ikidesse p\u00e4ringutesse, mis on Project s\u00f5lme offshoot'id, v\u00e4lja arvatud login s\u00f5lm. Tundub, et sellel etapil on meil juba stsenaarium valmis ning j\u00e4\u00e4b vaid selle k\u00e4ivitamine. Stsenaariumi saab k\u00e4ivitada, valides punkti <strong>K\u00e4ita<\/strong> Project s\u00f5lme kontekstimen\u00fc\u00fcst. <\/p>\n<p><\/p>\n<h2 id=\"proveryaem-korrektnost-sozdaniya-posta\">Kontrollime postituse loomise korrektset toimumist<\/h2>\n<p><\/p>\n<p>Sellel etapil suudab meie stsenaarium sisselogida ja, kasutades autoriseerimise tokenit, postitust luua. Siiski peame veenduma, et uus loodud postitus omab \u00f5iget nime. See t\u00e4hendab, et p\u00f5him\u00f5tteliselt tuleb teha j\u00e4rgmist:<\/p>\n<p><\/p>\n<ul>\n<li>Saata p\u00e4ring postituse saamiseks id j\u00e4rgi, <\/li>\n<li>Kontrollida, et serverist saadud nimi vastab postituse loomisel edastatud nimele<\/li>\n<\/ul>\n<p><\/p>\n<p>Vaadakem esimest sammu. Kuna id v\u00e4\u00e4rtus m\u00e4\u00e4ratakse skripti t\u00e4itmise ajal, tuleb luua d\u00fcnaamiline muutuja (nimetame selle <code>postId<\/code>) s\u00f5lmest <strong>create-post<\/strong> Projektis\u00f5lme tasemel. Kuidas seda teha, teame juba, piisab, kui p\u00f6\u00f6rduda jaotise poole <strong>Salvestame tokeni muutuja<\/strong>. J\u00e4\u00e4b vaid luua p\u00e4ring postituse saamiseks selle id j\u00e4rgi. Selleks loome RequestStep <strong>get-post<\/strong> j\u00e4rgnevate parameetritega:<\/p>\n<p><\/p>\n<ul>\n<li>P\u00e4ringu t\u00fc\u00fcp: GET<\/li>\n<li>URL: ${domain}\/posts\/${$dynamicVar.postId}<\/li>\n<\/ul>\n<p><\/p>\n<p>Teise sammu teostamiseks peame tundma tutvustama <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Kinnitus<\/a><\/noindex> s\u00f5lme. Assertion s\u00f5lm \u2014 see on s\u00f5lm, mis v\u00f5imaldab kirjutada kontrollimisi teatud p\u00e4ringute jaoks. Igal assertion s\u00f5lmel v\u00f5ib olla mitu v\u00e4idet (kontrolli). T\u00e4iendavalt v\u00f5ite k\u00f5ikide assertion-t\u00fc\u00fcpide kohta lugeda meie <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">dokumentatsioon<\/a><\/noindex>. Me kasutame <code>V\u00f5rdle<\/code> assertion operaatoriga <code>v\u00f5rdne<\/code>. Assertion'e loomise viise on mitmeid:<\/p>\n<p><\/p>\n<ol>\n<li>Pikk. Looge k\u00e4sitsi kontekstmen\u00fc\u00fcst RequestStep s\u00f5lmele Assertion s\u00f5lm. Uues Assertion s\u00f5lmes lisage soovitud assertion ja t\u00e4itke v\u00e4ljad.<\/li>\n<li>Kiire. Looge Assertion s\u00f5lm koos assertioniga RequestStep s\u00f5lmest kontekstmen\u00fc\u00fc abil.<\/li>\n<\/ol>\n<p><\/p>\n<p>Kasutame teist meetodit. Nii n\u00e4eb see meie juhtumi jaoks v\u00e4lja.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace. Kiire algus\" src=\"\/wp-content\/uploads\/2019\/12\/7f1d81669cb4c10db5f0afa3bf04eddf.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Kellele see ei selgunud, toimub siin j\u00e4rgmine:<\/p>\n<p><\/p>\n<ol>\n<li>Tehke p\u00e4ring s\u00f5lmes. <strong>get-post<\/strong><\/li>\n<li>Vahekaardil. <strong>Parsed<\/strong> vastuse kontekstmen\u00fc\u00fcd kutsuda ja valida <strong>Loo assertion<\/strong> -&gt; <strong>V\u00f5rdle<\/strong> -&gt; <strong>V\u00f5rdne<\/strong><\/li>\n<\/ol>\n<p><\/p>\n<p>Palju \u00f5nne, oleme loonud oma esimese testi! Lihtne, eks? N\u00fc\u00fcd saate skripti t\u00e4ies mahus k\u00e4ivitada ja tulemustest r\u00f5\u00f5mu tunda. J\u00e4\u00e4nud on vaid v\u00e4ikeste muudatuste tegemine ja muutmine <code>title<\/code> erakordsesse muutujasse. Kuid j\u00e4tame selle teile kodut\u00f6\u00f6ks)<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Kokkuv\u00f5te<\/h1>\n<p><\/p>\n<p>K\u00e4esolevas juhendis oleme loonud t\u00e4iskohaga skripti ja samal ajal \u00fclevaate m\u00f5nest meie toote funktsioonist. Loomulikult ei kasutanud me sugugi kogu funktsionaalsust ning j\u00e4rgmistes artiklites teeme p\u00f5hjaliku \u00fclevaate TestMace v\u00f5imalustest. J\u00e4lgige uuendusi!<\/p>\n<p><\/p>\n<p>P.S. Kellele ei meeldi k\u00f5iki samme j\u00e4rgida, oleme lahkelt salvestanud <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/testmace-quick-start-project\">hoidla<\/a><\/noindex> artiklis olevat projekti. Avage see, kasutades <strong>Fail<\/strong> -&gt; <strong>Avage projekt<\/strong> ja valige kaust Projekt.<\/p>\n<p>Allikas: <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.1.1 - 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\/et\/blog\/news\/testmace-bystryj-start\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\/et\/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. Kiire algus | ProHoster","description":"Tere k\u00f5igile.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/testmace-bystryj-start","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\/et\/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\/et\/wp-json\/wp\/v2\/posts\/54167","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54167"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54167\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54167"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54167"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}