{"id":54187,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/testmace-moshhnaya-ide-dlya-raboty-s-api"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"testmace-moshhnaya-ide-dlya-raboty-s-api","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","title":{"rendered":"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ahoj v\u0161ichni! Dnes chceme p\u0159edstavit na\u0161emu IT spole\u010denstv\u00ed n\u00e1\u0161 produkt \u2013 IDE pro pr\u00e1ci s API <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">TestMace<\/a><\/noindex>. Mo\u017en\u00e1 n\u011bkte\u0159\u00ed z v\u00e1s o n\u00e1s ji\u017e v\u00ed z <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/blog\/\">p\u0159edchoz\u00edch \u010dl\u00e1nk\u016f<\/a><\/noindex>. Nicm\u00e9n\u011b nebyl proveden komplexn\u00ed p\u0159ehled n\u00e1stroje, proto se sna\u017e\u00edme tento nep\u0159\u00edjemn\u00fd nedostatek napravit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/798c0783510a07e7fd162bdf14151c29.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h1 id=\"motivaciya\">Motivace<\/h1>\n<p><\/p>\n<p>Cht\u011bli bychom za\u010d\u00edt t\u00edm, jak jsme vlastn\u011b p\u0159i\u0161li k takov\u00e9mu \u017eivotu a rozhodli se vytvo\u0159it sv\u016fj n\u00e1stroj pro pokro\u010dilou pr\u00e1ci s API. Za\u010dn\u011bme seznamem funkcionalit, kter\u00fdmi by m\u011bl produkt disponovat, o kter\u00e9m m\u016f\u017eeme \u0159\u00edci, \u017ee je to \u201eIDE pro pr\u00e1ci s API\u201c:<\/p>\n<p><\/p>\n<ul>\n<li>Vytv\u00e1\u0159en\u00ed a prov\u00e1d\u011bn\u00ed dotaz\u016f a skript\u016f (po\u0159ad\u00ed dotaz\u016f)<\/li>\n<li>Ps\u00e1n\u00ed r\u016fzn\u00fdch typ\u016f test\u016f<\/li>\n<li>Generov\u00e1n\u00ed test\u016f<\/li>\n<li>Pr\u00e1ce s popisem API, v\u010detn\u011b importu z form\u00e1t\u016f jako Swagger, OpenAPI, WADL atd.<\/li>\n<li>Mockov\u00e1n\u00ed dotaz\u016f<\/li>\n<li>Dobr\u00e1 podpora jednoho nebo v\u00edce programovac\u00edch jazyk\u016f pro psan\u00ed skript\u016f, v\u010detn\u011b integrace s popul\u00e1rn\u00edmi knihovnami<\/li>\n<li>atd.<\/li>\n<\/ul>\n<p><\/p>\n<p>Seznam lze doplnit dle libosti. D\u016fle\u017eit\u00e9 je vytvo\u0159it nejen samotn\u00e9 IDE, ale i ur\u010ditou infrastrukturu, jako je cloudov\u00e1 synchronizace, n\u00e1stroje p\u0159\u00edkazov\u00e9ho \u0159\u00e1dku, slu\u017eba online monitorov\u00e1n\u00ed atd. Nakonec trendy posledn\u00edch let n\u00e1m d\u00e1vaj\u00ed najevo, \u017ee krom\u011b siln\u00e9 funkce aplikace, je tak\u00e9 d\u016fle\u017eit\u00fd jej\u00ed p\u0159\u00edjemn\u00fd design.<\/p>\n<p><\/p>\n<p>Pro koho je tento n\u00e1stroj ur\u010den? O\u010dividn\u011b pro v\u0161echny, kte\u0159\u00ed maj\u00ed co do \u010din\u011bn\u00ed s v\u00fdvojem a testov\u00e1n\u00edm API \u2013 v\u00fdvoj\u00e1\u0159e a testery =). Pokud pro prvn\u00ed by \u010dasto sta\u010dilo prov\u00e1d\u011bt jednotliv\u00e9 dotazy a jednoduch\u00e9 sc\u00e9n\u00e1\u0159e, pak pro testery je to jeden z hlavn\u00edch n\u00e1stroj\u016f, kter\u00fd krom\u011b jin\u00e9ho mus\u00ed zahrnovat siln\u00fd mechanismus pro psan\u00ed test\u016f s mo\u017enost\u00ed jejich spu\u0161t\u011bn\u00ed v CI.<\/p>\n<p><\/p>\n<p>Tak\u017ee, v souladu s t\u011bmito orientacemi, jsme za\u010dali vytv\u00e1\u0159et sv\u016fj produkt. Pod\u00edvejme se, co jsme v t\u00e9to f\u00e1zi vytvo\u0159ili.<\/p>\n<p><\/p>\n<h1 id=\"bystryy-start\">Rychl\u00fd start<\/h1>\n<p><\/p>\n<p>Za\u010dn\u011bme prvn\u00edm sezn\u00e1men\u00edm s aplikac\u00ed. M\u016f\u017eete si ji st\u00e1hnout <noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\/\">na na\u0161ich str\u00e1nk\u00e1ch<\/a><\/noindex>. V sou\u010dasnosti jsou podporov\u00e1ny v\u0161echny 3 hlavn\u00ed platformy \u2013 Windows, Linux, MacOS. St\u00e1hn\u011bte si, nainstalujte a spus\u0165te. P\u0159i prvn\u00edm spu\u0161t\u011bn\u00ed m\u016f\u017eete spat\u0159it n\u00e1sleduj\u00edc\u00ed okno:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/dbbd26d8656488cd11716f7dbede9ec7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Klikn\u011bte na plus naho\u0159e v oblasti obsahu pro vytvo\u0159en\u00ed prvn\u00edho dotazu. Z\u00e1lo\u017eka s dotazem vypad\u00e1 takto:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/d76205f43ec821018642a3d354532e7e.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pod\u00edvejme se na n\u011bj podrobn\u011bji. Rozhran\u00ed pro dotazy velmi p\u0159ipom\u00edn\u00e1 rozhran\u00ed popul\u00e1rn\u00edch REST klient\u016f, co\u017e usnad\u0148uje migraci z podobn\u00fdch n\u00e1stroj\u016f. Poj\u010fme prov\u00e9st prvn\u00ed dotaz na url <noindex><a rel=\"nofollow\" href=\"https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8\">https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8<\/a><\/noindex><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/19e639baa1e0d51f1a40b76ae9144d6c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Na prvn\u00ed pohled se zd\u00e1, \u017ee odpov\u011bdn\u00ed panel tak\u00e9 nep\u0159in\u00e1\u0161\u00ed \u017e\u00e1dn\u00e1 p\u0159ekvapen\u00ed. R\u00e1d bych v\u0161ak upozornil na n\u011bkter\u00e9 momenty:<\/p>\n<p><\/p>\n<ol>\n<li>T\u011blo odpov\u011bdi je prezentov\u00e1no jako strom, co\u017e jednak zvy\u0161uje informativnost a jednak umo\u017e\u0148uje p\u0159idat n\u011bkter\u00e9 zaj\u00edmav\u00e9 funkce, o kter\u00fdch se zm\u00edn\u00edm n\u00ed\u017ee.<\/li>\n<li>Existuje z\u00e1lo\u017eka Assertions, ve kter\u00e9 je zobrazen seznam test\u016f pro dan\u00fd dotaz.<\/li>\n<\/ol>\n<p><\/p>\n<p>Jak m\u016f\u017eete vid\u011bt, n\u00e1\u0161 n\u00e1stroj lze pou\u017e\u00edt jako pohodln\u00fd REST klient. Av\u0161ak nese\u0161li jsme se zde, pokud by jeho mo\u017enosti byly omezeny pouze na odes\u00edl\u00e1n\u00ed dotaz\u016f. Nyn\u00ed pop\u00ed\u0161u z\u00e1kladn\u00ed pojmy a funk\u010dn\u00ed mo\u017enosti TestMace.<\/p>\n<p><\/p>\n<h1 id=\"osnovnye-ponyatiya-i-vozmozhnosti\">Z\u00e1kladn\u00ed pojmy a mo\u017enosti<\/h1>\n<p><\/p>\n<h2 id=\"uzel\">Uzla<\/h2>\n<p><\/p>\n<p>Funk\u010dnost TestMace je rozd\u011blena do r\u016fzn\u00fdch typ\u016f uzl\u016f. Na p\u0159\u00edkladu v\u00fd\u0161e jsme demonstrovali pr\u00e1ci s RequestStep uzlem. Nyn\u00ed jsou v\u0161ak v aplikaci k dispozici tak\u00e9 n\u00e1sleduj\u00edc\u00ed typy uzl\u016f:<\/p>\n<p><\/p>\n<ul>\n<li>RequestStep. Toto je uzel, pomoc\u00ed kter\u00e9ho m\u016f\u017eete vytvo\u0159it dotaz. Jako pod\u0159\u00edzen\u00fd prvek m\u016f\u017ee m\u00edt pouze jeden Assertion uzel.<\/li>\n<li>Assertion. Uzel se pou\u017e\u00edv\u00e1 k psan\u00ed test\u016f. M\u016f\u017ee b\u00fdt pod\u0159\u00edzen\u00fdm uzlem pouze pro RequestStep uzel.<\/li>\n<li>Folder. Umo\u017e\u0148uje seskupit Folder a RequestStep uzly uvnit\u0159 sebe.<\/li>\n<li>Project. Toto je ko\u0159enov\u00fd uzel, kter\u00fd se vytv\u00e1\u0159\u00ed automaticky p\u0159i vytv\u00e1\u0159en\u00ed projektu. Jinak opakuje funk\u010dn\u00ed mo\u017enosti uzlu Folder.<\/li>\n<li>Link. Odkaz na Folder nebo RequestStep uzel. Umo\u017e\u0148uje znovu pou\u017e\u00edt dotazy a sc\u00e9n\u00e1\u0159e.<\/li>\n<li>atd.<\/li>\n<\/ul>\n<p><\/p>\n<p>Uzly se nach\u00e1z\u00ed ve scratches (panel vlevo dole, slou\u017e\u00ed k rychl\u00e9mu vytv\u00e1\u0159en\u00ed \u201ejednor\u00e1zov\u00fdch\u201c po\u017eadavk\u016f) a v project (panel vlevo naho\u0159e), na kter\u00fd se pod\u00edvejme podrobn\u011bji.<\/p>\n<p><\/p>\n<h2 id=\"proekt\">Projekt<\/h2>\n<p><\/p>\n<p>P\u0159i spu\u0161t\u011bn\u00ed aplikace jste si mohli v\u0161imnout osam\u011bl\u00e9 \u0159\u00e1dky Project v lev\u00e9m horn\u00edm rohu. Toto je ko\u0159en stromu projektu. P\u0159i spu\u0161t\u011bn\u00ed projektu se vytv\u00e1\u0159\u00ed do\u010dasn\u00fd projekt, jeho\u017e cesta z\u00e1vis\u00ed na va\u0161\u00ed opera\u010dn\u00edm syst\u00e9mu. Kdykoli m\u016f\u017eete projekt p\u0159esunout na m\u00edsto, kter\u00e9 v\u00e1m vyhovuje.<\/p>\n<p><\/p>\n<p>Hlavn\u00edm \u00fa\u010delem projektu je mo\u017enost ukl\u00e1dat v\u00fdvoj v souborov\u00e9m syst\u00e9mu a n\u00e1sledn\u011b synchronizovat prost\u0159ednictv\u00edm syst\u00e9m\u016f pro kontrolu verz\u00ed, prov\u00e1d\u011bn\u00ed sc\u00e9n\u00e1\u0159\u016f v CI, revizi zm\u011bn atd.<\/p>\n<p><\/p>\n<h2 id=\"peremennye\">Prom\u011bnn\u00e9<\/h2>\n<p><\/p>\n<p>Prom\u011bnn\u00e9 jsou jedn\u00edm z kl\u00ed\u010dov\u00fdch mechanism\u016f aplikace. Ti z v\u00e1s, kte\u0159\u00ed pracuj\u00ed s n\u00e1stroji, jako je TestMace, ji\u017e mo\u017en\u00e1 pochopili, o \u010dem je \u0159e\u010d. Tak\u017ee, prom\u011bnn\u00e9 jsou zp\u016fsob, jak uchov\u00e1vat sd\u00edlen\u00e1 data a komunikovat mezi uzly. Analogicky to jsou nap\u0159\u00edklad prom\u011bnn\u00e9 prost\u0159ed\u00ed v Postman nebo Insomnia. Nicm\u00e9n\u011b, \u0161li jsme d\u00e1l a rozvinuli toto t\u00e9ma. V TestMace lze prom\u011bnn\u00e9 nastavit na \u00farovni jak\u00e9hokoli uzlu. Existuje tak\u00e9 mechanismus d\u011bd\u011bn\u00ed prom\u011bnn\u00fdch od p\u0159edk\u016f a p\u0159ekr\u00fdv\u00e1n\u00ed prom\u011bnn\u00fdch u potomk\u016f. Krom\u011b toho existuje \u0159ada vestav\u011bn\u00fdch prom\u011bnn\u00fdch, jejich\u017e n\u00e1zvy za\u010d\u00ednaj\u00ed na <code>$<\/code>. Zde je n\u011bkolik z nich:<\/p>\n<p><\/p>\n<ul>\n<li><code>$prevStep<\/code> \u2014 odkaz na prom\u011bnn\u00e9 p\u0159edchoz\u00edho uzlu<\/li>\n<li><code>$nextStep<\/code> \u2014 odkaz na prom\u011bnn\u00e9 n\u00e1sleduj\u00edc\u00edho uzlu<\/li>\n<li><code>$parent<\/code> \u2014 tot\u00e9\u017e, ale jen pro p\u0159edka<\/li>\n<li><code>$response<\/code> \u2014 odpov\u011b\u010f od serveru<\/li>\n<li><code>$env<\/code> \u2014 aktu\u00e1ln\u00ed prom\u011bnn\u00e9 prost\u0159ed\u00ed<\/li>\n<li><code>$dynamicVar<\/code> \u2014 dynamick\u00e9 prom\u011bnn\u00e9, kter\u00e9 se vytv\u00e1\u0159ej\u00ed b\u011bhem prov\u00e1d\u011bn\u00ed skriptu nebo po\u017eadavku<\/li>\n<\/ul>\n<p><\/p>\n<p><code>$env<\/code> \u2014 to jsou v podstat\u011b b\u011b\u017en\u00e9 prom\u011bnn\u00e9 \u00farovn\u011b Project uzlu, ale sada prom\u011bnn\u00fdch prost\u0159ed\u00ed se m\u011bn\u00ed v z\u00e1vislosti na vybran\u00e9m prost\u0159ed\u00ed. <\/p>\n<p><\/p>\n<p>P\u0159\u00edstup k prom\u011bnn\u00e9 se prov\u00e1d\u00ed p\u0159es <code>${variable_name}<\/code><br \/>\nJako hodnota prom\u011bnn\u00e9 m\u016f\u017ee b\u00fdt jin\u00e1 prom\u011bnn\u00e1, nebo dokonce cel\u00e9 v\u00fdrazy. Nap\u0159\u00edklad jako prom\u011bnn\u00e1 url m\u016f\u017ee b\u00fdt v\u00fdraz typu<br \/>\n<code>http:\/\/${host}:${port}\/${endpoint}<\/code>.<\/p>\n<p><\/p>\n<p>Samostatn\u011b stoj\u00ed za zm\u00ednku mo\u017enost p\u0159i\u0159azov\u00e1n\u00ed prom\u011bnn\u00fdch b\u011bhem prov\u00e1d\u011bn\u00ed skriptu. Nap\u0159\u00edklad \u010dasto vznik\u00e1 pot\u0159eba ulo\u017eit autoriza\u010dn\u00ed \u00fadaje (token nebo cel\u00fd \u0159\u00e1dek hlavi\u010dky), kter\u00e9 p\u0159i\u0161ly ze serveru po \u00fasp\u011b\u0161n\u00e9m p\u0159ihl\u00e1\u0161en\u00ed. TestMace umo\u017e\u0148uje ukl\u00e1dat podobn\u00e1 data do dynamick\u00fdch prom\u011bnn\u00fdch jednoho z p\u0159edk\u016f. Aby se p\u0159ede\u0161lo koliz\u00edm s ji\u017e existuj\u00edc\u00edmi \u201estatick\u00fdmi\u201c prom\u011bnn\u00fdmi, dynamick\u00e9 prom\u011bnn\u00e9 jsou vy\u010dlen\u011bny do samostatn\u00e9ho objektu. <code>$dynamicVar<\/code>. <\/p>\n<p><\/p>\n<h2 id=\"scenarii\">Sc\u00e9n\u00e1\u0159e<\/h2>\n<p><\/p>\n<p>Pou\u017eit\u00edm v\u0161ech v\u00fd\u0161e uveden\u00fdch mo\u017enost\u00ed m\u016f\u017eete vykon\u00e1vat cel\u00e9 sc\u00e9n\u00e1\u0159e po\u017eadavk\u016f. Nap\u0159\u00edklad, vytvo\u0159en\u00ed entity -&gt; po\u017eadavek na entitu -&gt; smaz\u00e1n\u00ed entity. V tomto p\u0159\u00edpad\u011b m\u016f\u017eete nap\u0159\u00edklad pou\u017e\u00edt Folder uzel pro seskupen\u00ed n\u011bkolika RequestStep uzl\u016f.<\/p>\n<p><\/p>\n<h2 id=\"avtodopolnenie-i-podsvetka-znacheniya-vyrazheniya\">Automatick\u00e9 dopl\u0148ov\u00e1n\u00ed a zv\u00fdrazn\u011bn\u00ed hodnoty v\u00fdrazu<\/h2>\n<p><\/p>\n<p>Pro pohodlnou pr\u00e1ci s prom\u011bnn\u00fdmi (a nejen s nimi) je pot\u0159ebn\u00e9 automatick\u00e9 dopl\u0148ov\u00e1n\u00ed. A samoz\u0159ejm\u011b zv\u00fdrazn\u011bn\u00ed hodnoty v\u00fdrazu, aby bylo snaz\u0161\u00ed a pohodln\u011bj\u0161\u00ed zjistit, \u010demu odpov\u00edd\u00e1 ta \u010di ona prom\u011bnn\u00e1. Tady je to p\u0159esn\u011b ten p\u0159\u00edpad, kdy je lep\u0161\u00ed jednou vid\u011bt, ne\u017e stokr\u00e1t sly\u0161et:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/cf9d30c9623b18575825d4282b8fe3e3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Je t\u0159eba poznamenat, \u017ee automatick\u00e9 dopl\u0148ov\u00e1n\u00ed je realizov\u00e1no nejen pro prom\u011bnn\u00e9, ale tak\u00e9 nap\u0159\u00edklad pro hlavi\u010dky, hodnoty ur\u010dit\u00fdch hlavi\u010dek (nap\u0159\u00edklad automatick\u00e9 dopl\u0148ov\u00e1n\u00ed pro hlavi\u010dku Content-Type), protokoly a mnoh\u00e9 dal\u0161\u00ed. Seznam se neust\u00e1le roz\u0161i\u0159uje s r\u016fstem aplikace.<\/p>\n<p><\/p>\n<h2 id=\"undoredo\">Zp\u011bt\/opakovat<\/h2>\n<p><\/p>\n<p>Zp\u011bt\/opakovat zm\u011bny je velmi pohodln\u00e1 v\u011bc, av\u0161ak z n\u011bjak\u00e9ho d\u016fvodu se implementuje daleko ne v\u0161ude (a n\u00e1stroje pro pr\u00e1ci s API nejsou v\u00fdjimkou). Ale my mezi takov\u00fdmi nejsme!) Zp\u011bt\/opakovat je u n\u00e1s realizov\u00e1no v r\u00e1mci cel\u00e9ho projektu, co\u017e umo\u017e\u0148uje zru\u0161it nejen \u00fapravy ur\u010dit\u00e9 uzlu, ale tak\u00e9 jeho vytvo\u0159en\u00ed, smaz\u00e1n\u00ed, p\u0159esunut\u00ed atd. Nejd\u016fle\u017eit\u011bj\u0161\u00ed operace vy\u017eaduj\u00ed potvrzen\u00ed.<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov\">Vytv\u00e1\u0159en\u00ed test\u016f<\/h2>\n<p><\/p>\n<p>Za vytv\u00e1\u0159en\u00ed test\u016f odpov\u00edd\u00e1 uzel Assertion. Jednou z hlavn\u00edch vlastnost\u00ed je mo\u017enost vytv\u00e1\u0159en\u00ed test\u016f bez programov\u00e1n\u00ed, s vyu\u017eit\u00edm integrovan\u00fdch editor\u016f. <\/p>\n<p><\/p>\n<p>Uzel Assertion se skl\u00e1d\u00e1 z mno\u017einy assertion\u016f (tvrzen\u00ed). Ka\u017ed\u00fd assertion m\u00e1 sv\u016fj typ, v sou\u010dasnosti existuje n\u011bkolik typ\u016f assertion\u016f.<\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Compare values \u2014 jednodu\u0161e porovn\u00e1v\u00e1 2 hodnoty. Existuje n\u011bkolik porovn\u00e1vac\u00edch oper\u00e1tor\u016f \u201erovno\u201c, \u201enerovno\u201c, \u201ev\u011bt\u0161\u00ed\u201c, \u201ev\u011bt\u0161\u00ed nebo rovno\u201c, \u201emen\u0161\u00ed\u201c, \u201emen\u0161\u00ed nebo rovno\u201c.<\/p>\n<p>\n<\/li>\n<li>\n<p>Obsahuje hodnotu \u2014 kontroluje, zda pod\u0159et\u011bzec je obsa\u017een ve \u0159et\u011bzci.<\/p>\n<p>\n<\/li>\n<li>\n<p>XPath \u2014 kontroluje, zda m\u00e1 selektor v XML ur\u010ditou hodnotu.<\/p>\n<p>\n<\/li>\n<li>\n<p>JavaScript assertion \u2014 libovoln\u00fd skript v jazyce javascript, kter\u00fd vrac\u00ed true v p\u0159\u00edpad\u011b \u00fasp\u011bchu a false v p\u0159\u00edpad\u011b ne\u00fasp\u011bchu.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<p>Poznamen\u00e1v\u00e1m, \u017ee pouze posledn\u00ed vy\u017eaduje od u\u017eivatele dovednosti programov\u00e1n\u00ed, ostatn\u00ed 3 assertiony se vytv\u00e1\u0159ej\u00ed pomoc\u00ed grafick\u00e9ho rozhran\u00ed. Tady je nap\u0159\u00edklad, jak vypad\u00e1 dialog pro vytv\u00e1\u0159en\u00ed assertion porovn\u00e1n\u00ed hodnot:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/e71e11fb0fb664d1d9751a71fbdcc850.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u0159e\u0161ni\u010dkou na dortu je rychl\u00e9 vytv\u00e1\u0159en\u00ed assertion\u016f z odpov\u011bdi, jen se pod\u00edvejte na to!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/3b86084419339a7a05a3548df5c12d6a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nicm\u00e9n\u011b takov\u00e9 assertiony maj\u00ed z\u0159ejm\u00e1 omezen\u00ed, p\u0159i jejich\u017e setk\u00e1n\u00ed m\u016f\u017eete pou\u017e\u00edt javascript assertion. A tady TestMace tak\u00e9 poskytuje pohodln\u00e9 prost\u0159ed\u00ed s automatick\u00fdm dopl\u0148ov\u00e1n\u00edm, zv\u00fdrazn\u011bn\u00edm syntaktick\u00fdch chyb a dokonce i se statick\u00fdm analyz\u00e1torem.<\/p>\n<p><\/p>\n<h2 id=\"opisanie-api\">Popis API<\/h2>\n<p><\/p>\n<p>TestMace umo\u017e\u0148uje nejen vyu\u017e\u00edvat API, ale tak\u00e9 jej dokumentovat. P\u0159i tom m\u00e1 samotn\u00fd popis hierarchickou strukturu a organicky zapad\u00e1 do ostatn\u00edho projektu. Krom\u011b toho v sou\u010dasn\u00e9 dob\u011b existuje mo\u017enost importu popisu API z form\u00e1t\u016f Swagger 2.0 \/ OpenAPI 3.0. Samotn\u00fd popis nen\u00ed jen mrtvou v\u00e1hou, ale \u00fazce se integruje s ostatn\u00ed \u010d\u00e1st\u00ed projektu, konkr\u00e9tn\u011b je dostupn\u00e9 automatick\u00e9 dopl\u0148ov\u00e1n\u00ed URL, HTTP hlavi\u010dek, dotazov\u00fdch parametr\u016f a dal\u0161\u00edho, a v budoucnu pl\u00e1nujeme p\u0159idat testy na shodu odpov\u011bdi s popisem API.<\/p>\n<p><\/p>\n<h2 id=\"sharing-nod\">Sd\u00edlen\u00ed uzl\u016f<\/h2>\n<p><\/p>\n<p>P\u0159\u00edpad: cht\u011bli byste sd\u00edlet probl\u00e9mov\u00fd dotaz nebo dokonce cel\u00fd sc\u00e9n\u00e1\u0159 s kolegou, nebo jej prost\u011b p\u0159ipojit k chyb\u011b. TestMace pokr\u00fdv\u00e1 i tento p\u0159\u00edpad: aplikace umo\u017e\u0148uje serializaci jak\u00e9hokoli uzlu a dokonce podstromu do URL. Kop\u00edrov\u00e1n\u00ed a vlo\u017een\u00ed a u\u017e jste bez probl\u00e9m\u016f p\u0159enesli dotaz na jin\u00fd po\u010d\u00edta\u010d nebo projekt.<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-hraneniya-proekta\">\u010clov\u011bku \u010diteln\u00fd form\u00e1t ukl\u00e1d\u00e1n\u00ed projektu<\/h2>\n<p><\/p>\n<p>V sou\u010dasn\u00e9 dob\u011b ka\u017ed\u00fd uzel je ulo\u017een v samostatn\u00e9m souboru s p\u0159\u00edponou yml (jak je tomu u uzlu Assertion), nebo v slo\u017ece s n\u00e1zvem uzlu a souborem index.yml uvnit\u0159 n\u00ed.<br \/>\nTakhle nap\u0159\u00edklad vypad\u00e1 soubor s dotazem, kter\u00fd jsme ud\u011blali v p\u0159ehledu v\u00fd\u0161e:<\/p>\n<p>\n<b class=\"spoiler_title\">index.yml<\/b><\/p>\n<pre><code class=\"ruby\">children: []\nvariables: {}\ntype: RequestStep\nassignVariables: []\nrequestData:\n  request:\n    method: GET\n    url: 'https:\/\/next.json-generator.com\/api\/json\/get\/NJv-NT-U8'\n  headers: []\n  disabledInheritedHeaders: []\n  params: []\n  body:\n    type: Json\n    jsonBody: ''\n    xmlBody: ''\n    textBody: ''\n    formData: []\n    file: ''\n    formURLEncoded: []\n  strictSSL: Inherit\nauthData:\n  type: inherit\nname: Scratch 1<\/code><\/pre>\n<p><\/p>\n<p>Jak vid\u00edte, v\u0161echno je zcela jasn\u00e9. P\u0159i p\u0159\u00e1n\u00ed je tento form\u00e1t zcela pohodln\u00e9 editovat i ru\u010dn\u011b.<\/p>\n<p><\/p>\n<p>Hierarchie slo\u017eek v souborov\u00e9m syst\u00e9mu zcela odpov\u00edd\u00e1 hierarchii uzl\u016f v projektu. Nap\u0159\u00edklad sc\u00e9n\u00e1\u0159 ve form\u00e1tu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/8f08d934a977e4fdacd269f4ea0c34b5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Je mapov\u00e1n v souborov\u00e9m syst\u00e9mu na n\u00e1sleduj\u00edc\u00ed strukturu (uk\u00e1z\u00e1na pouze hierarchie slo\u017eek, ale podstata je jasn\u00e1)<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"TestMace \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API\" src=\"\/wp-content\/uploads\/2019\/12\/60a54704979f5a77ee05735fd8ebe824.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Co usnad\u0148uje proces revize projektu.<\/p>\n<p><\/p>\n<h2 id=\"import-iz-postman\">Import z Postmanu<\/h2>\n<p><\/p>\n<p>Po p\u0159e\u010dten\u00ed v\u0161ech v\u00fd\u0161e uveden\u00fdch informac\u00ed n\u011bkte\u0159\u00ed u\u017eivatel\u00e9 budou cht\u00edt vyzkou\u0161et (tak \u017ee?) nov\u00fd produkt nebo (co \u010dert necht\u011bl!) jej pln\u011b vyu\u017e\u00edt ve sv\u00e9m projektu. Ov\u0161em migraci m\u016f\u017ee zastavit velk\u00e9 mno\u017estv\u00ed v\u00fdvoj\u016f ve stejn\u00e9m Postmanu. Pro takov\u00e9 p\u0159\u00edpady TestMace podporuje import kolekc\u00ed z Postmanu. V sou\u010dasn\u00e9 dob\u011b je podporov\u00e1n import bez test\u016f, nicm\u00e9n\u011b v budoucnu nevy\u0159azujeme ani jejich podporu.<\/p>\n<p><\/p>\n<h1 id=\"plany\">Pl\u00e1ny<\/h1>\n<p><\/p>\n<p>Douf\u00e1m, \u017ee n\u00e1\u0161 produkt zaujal mnoh\u00e9 z t\u011bch, kte\u0159\u00ed do\u010detli a\u017e sem. To v\u0161ak nen\u00ed v\u0161e! Pr\u00e1ce na produktu pokra\u010duje naplno a zde jsou n\u011bkter\u00e9 funkce, kter\u00e9 pl\u00e1nujeme brzy p\u0159idat.<\/p>\n<p><\/p>\n<h2 id=\"oblachnaya-sinhronizaciya\">Cloudov\u00e1 synchronizace<\/h2>\n<p><\/p>\n<p>Jedna z nej\u017e\u00e1dan\u011bj\u0161\u00edch funkc\u00ed. V sou\u010dasnosti nab\u00edz\u00edme pro synchronizaci vyu\u017e\u00edt syst\u00e9my kontroly verz\u00ed, pro co\u017e upravujeme form\u00e1t tak, aby byl p\u0159\u00edv\u011btiv\u011bj\u0161\u00ed pro tento typ ukl\u00e1d\u00e1n\u00ed. Nicm\u00e9n\u011b ne ka\u017ed\u00fd takov\u00fd tok pr\u00e1ce vyhovuje, proto pl\u00e1nujeme p\u0159idat v\u0161em zn\u00e1m\u00fd mechanismus synchronizace p\u0159es na\u0161e servery. <\/p>\n<p><\/p>\n<h2 id=\"cli\">CLI<\/h2>\n<p><\/p>\n<p>Jak ji\u017e bylo uvedeno v\u00fd\u0161e, produkty na \u00farovni IDE se neobejdou bez r\u016fzn\u00fdch integrac\u00ed s ji\u017e existuj\u00edc\u00edmi aplikacemi nebo workflow. CLI je p\u0159esn\u011b to, co pot\u0159ebujeme pro integraci test\u016f napsan\u00fdch v TestMace do procesu continuous integration. Pr\u00e1ce na CLI prob\u00edh\u00e1 naplno, v ran\u00fdch verz\u00edch bude spu\u0161t\u011bn\u00ed projektu s jednoduchou konzolovou zpr\u00e1vou. V budoucnu pl\u00e1nujeme p\u0159idat v\u00fdstup zpr\u00e1vy ve form\u00e1tu JUnit.<\/p>\n<p><\/p>\n<h2 id=\"plaginnaya-sistema\">Pluginov\u00fd syst\u00e9m<\/h2>\n<p><\/p>\n<p>Navzdory ve\u0161ker\u00e9 s\u00edle na\u0161eho n\u00e1stroje je mno\u017estv\u00ed p\u0159\u00edpad\u016f, kter\u00e9 je t\u0159eba vy\u0159e\u0161it, nekone\u010dn\u00e9. Koneckonc\u016f existuj\u00ed \u00fakoly specifick\u00e9 pro konkr\u00e9tn\u00ed projekt. Proto pl\u00e1nujeme v budoucnu p\u0159idat SDK pro v\u00fdvoj plugin\u016f, aby ka\u017ed\u00fd v\u00fdvoj\u00e1\u0159 mohl p\u0159idat funk\u010dnost podle sv\u00fdch p\u0159edstav.<\/p>\n<p><\/p>\n<h2 id=\"rasshirenie-assortimenta-tipov-uzlov\">Roz\u0161\u00ed\u0159en\u00ed sortimentu typ\u016f uzl\u016f<\/h2>\n<p><\/p>\n<p>Tento soubor uzl\u016f nepokr\u00fdv\u00e1 v\u0161echny p\u0159\u00edpady pot\u0159ebn\u00e9 u\u017eivateli. Uzel, kter\u00fd pl\u00e1nujeme p\u0159idat:<\/p>\n<p><\/p>\n<ul>\n<li>Script uzel \u2014 transformuje a ukl\u00e1d\u00e1 data pomoc\u00ed js a p\u0159\u00edslu\u0161n\u00e9ho API. Pou\u017eit\u00edm tohoto typu uzlu lze vytvo\u0159it v\u011bci jako pre-request a post-request skripty v Postman.<\/li>\n<li>GraphQL uzel \u2014 podpora graphql<\/li>\n<li>Custom assertion uzel \u2014 umo\u017en\u00ed roz\u0161\u00ed\u0159it sadu existuj\u00edc\u00edch assertion\u016f v projektu<br \/>\nSamoz\u0159ejm\u011b, \u017ee to nen\u00ed kone\u010dn\u00fd seznam, bude se neust\u00e1le roz\u0161i\u0159ovat i na z\u00e1klad\u011b va\u0161\u00ed zp\u011btn\u00e9 vazby.<\/li>\n<\/ul>\n<p><\/p>\n<h1 id=\"faq\">\u010casto kladen\u00e9 dotazy<\/h1>\n<p><\/p>\n<p><strong>\u010c\u00edm se li\u0161\u00edte od Postman?<\/strong><\/p>\n<p><\/p>\n<ol>\n<li>Koncept uzl\u016f, kter\u00fd umo\u017e\u0148uje t\u00e9m\u011b\u0159 nekone\u010dn\u011b \u0161k\u00e1lovat funk\u010dnost projektu<\/li>\n<li>\u010clov\u011bkem \u010diteln\u00fd form\u00e1t projektu s ulo\u017een\u00edm v souborov\u00e9m syst\u00e9mu, co\u017e usnad\u0148uje pr\u00e1ci se syst\u00e9my kontroly verz\u00ed<\/li>\n<li>Mo\u017enost vytv\u00e1\u0159en\u00ed test\u016f bez programov\u00e1n\u00ed a pokro\u010dilej\u0161\u00ed podpora js v editoru test\u016f (automatick\u00e9 dopl\u0148ov\u00e1n\u00ed, statick\u00fd analyz\u00e1tor)<\/li>\n<li>Pokro\u010dil\u00e9 automatick\u00e9 dopl\u0148ov\u00e1n\u00ed a zv\u00fdrazn\u011bn\u00ed aktu\u00e1ln\u00edch hodnot prom\u011bnn\u00fdch<\/li>\n<\/ol>\n<p><\/p>\n<p><strong>Je to produkt s otev\u0159en\u00fdm zdrojov\u00fdm k\u00f3dem?<\/strong><\/p>\n<p><\/p>\n<p>Ne, v sou\u010dasnosti jsou zdrojov\u00e9 k\u00f3dy uzav\u0159eny, ale do budoucna zva\u017eujeme mo\u017enost jejich otev\u0159en\u00ed.<\/p>\n<p><\/p>\n<p><strong>Z \u010deho \u017eijete?)<\/strong><\/p>\n<p><\/p>\n<p>Krom\u011b bezplatn\u00e9 verze pl\u00e1nujeme vydat i placenou verzi produktu. Ta bude p\u0159edev\u0161\u00edm obsahovat funkce vy\u017eaduj\u00edc\u00ed serverovou \u010d\u00e1st, jako nap\u0159\u00edklad synchronizaci.<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Z\u00e1v\u011br<\/h1>\n<p><\/p>\n<p>N\u00e1\u0161 projekt se rychl\u00fdmi kroky bl\u00ed\u017e\u00ed ke stabiln\u00edmu vyd\u00e1n\u00ed. Ji\u017e nyn\u00ed je ale produkt k pou\u017eit\u00ed a pozitivn\u00ed zp\u011btn\u00e1 vazba od na\u0161ich ran\u00fdch u\u017eivatel\u016f to potvrzuje. Aktivn\u011b shroma\u017e\u010fujeme zp\u011btnou vazbu, proto\u017ee bez \u00fazk\u00e9 spolupr\u00e1ce s komunitou nen\u00ed mo\u017en\u00e9 vybudovat dobr\u00fd n\u00e1stroj. Najdete n\u00e1s zde:<\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/client.testmace.com\">Ofici\u00e1ln\u00ed web<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/t.me\/testmace\">Telegram<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/testmaceslackin.herokuapp.com\">Slack<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/www.facebook.com\/testmace\">Facebook<\/a><\/noindex><\/p>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/TestMace\/TestMace-issues\">Issuer-tracker<\/a><\/noindex><\/p>\n<p><\/p>\n<p>T\u011b\u0161\u00edme se na va\u0161e p\u0159\u00e1n\u00ed a n\u00e1vrhy!<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">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! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0432\u0430\u0441 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0432\u0441\u0435\u043e\u0431\u044a\u0435\u043c\u043b\u044e\u0449\u0435\u0433\u043e \u043e\u0431\u0437\u043e\u0440\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u043d\u0435 \u0431\u044b\u043b\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0443\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u043c \u044d\u0442\u043e\u0442 \u0434\u043e\u0441\u0430\u0434\u043d\u044b\u0439 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u043a. \u041c\u043e\u0442\u0438\u0432\u0430\u0446\u0438\u044f \u0425\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0431\u044b \u043d\u0430\u0447\u0430\u0442\u044c \u0441 \u0442\u043e\u0433\u043e \u043a\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043c\u044b \u043f\u0440\u0438\u0448\u043b\u0438 \u043a \u0442\u0430\u043a\u043e\u0439 \u0436\u0438\u0437\u043d\u0438 \u0438 \u0440\u0435\u0448\u0438\u043b\u0438 [&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-54187","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\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\/cs\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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 \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api\" \/>\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-19T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:10+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 \u2014 mocn\u00e9 IDE pro pr\u00e1ci s API | ProHoster","description":"Ahoj v\u0161ichni! Dnes bychom cht\u011bli p\u0159edstavit IT ve\u0159ejnosti n\u00e1\u0161 produkt \u2014 IDE pro pr\u00e1ci s API TestMace.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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 \u2014 \u043c\u043e\u0449\u043d\u0430\u044f IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043d\u0430 \u0441\u0443\u0434 IT-\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0430\u0448 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u2014 IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace.","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/testmace-moshhnaya-ide-dlya-raboty-s-api","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-19T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:10+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54187","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:21:21","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 20:10:33","updated":"2026-01-24 10:21:21","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/54187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=54187"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/54187\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=54187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=54187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=54187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}