{"id":54188,"date":"2019-12-20T00:00:00","date_gmt":"2019-12-19T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/chem-testmace-luchshe-postman"},"modified":"2020-02-18T14:02:10","modified_gmt":"2020-02-18T11:02:10","slug":"chem-testmace-luchshe-postman","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ahoj v\u0161ichni, tady je <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! Mnoz\u00ed o n\u00e1s mo\u017en\u00e1 v\u011bd\u00ed z <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">na\u0161ich<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">p\u0159edchoz\u00edch<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">\u010dl\u00e1nk\u016f<\/a><\/noindex>. Pro ty, kte\u0159\u00ed se pr\u00e1v\u011b p\u0159ipojili: vyv\u00edj\u00edme IDE pro pr\u00e1ci s API TestMace. Nej\u010dast\u011bj\u0161\u00ed ot\u00e1zka p\u0159i porovn\u00e1v\u00e1n\u00ed TestMace s konkuruj\u00edc\u00edmi produkty je \u2014 \u201e\u010c\u00edm se odli\u0161ujete od Postman?\u201c. Rozhodli jsme se, \u017ee je na \u010dase poskytnout podrobnou odpov\u011b\u010f na tuto ot\u00e1zku. N\u00ed\u017ee jsme bodov\u011b sepsali na\u0161e v\u00fdhody oproti <noindex><a rel=\"nofollow\" href=\"https:\/\/www.getpostman.com\/\">Postman<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"razdelenie-na-uzly\">Rozd\u011blen\u00ed na uzly<\/h2>\n<p><\/p>\n<p>Pokud pracujete s Postman, jist\u011b v\u00edte, \u017ee rozhran\u00ed po\u017eadavku obsahuje ve\u0161kerou pot\u0159ebnou funk\u010dnost. Jsou zde skripty, testy a vlastn\u011b i samotn\u00e9 po\u017eadavky. To usnad\u0148uje pr\u00e1ci pro nov\u00e1\u010dky, av\u0161ak u v\u011bt\u0161\u00edch sc\u00e9n\u00e1\u0159\u016f takov\u00fd p\u0159\u00edstup nen\u00ed flexibiln\u00ed. Co kdy\u017e chcete vytvo\u0159it n\u011bkolik po\u017eadavk\u016f a prov\u00e9st jejich agregaci? Co kdy\u017e chcete vykonat skript bez po\u017eadavku nebo n\u011bkolik logicky odd\u011blen\u00fdch skript\u016f po sob\u011b? Nakonec by nebylo \u0161patn\u00e9 odd\u011blit testy od b\u011b\u017en\u00fdch utilit\u00e1rn\u00edch skript\u016f. Krom\u011b toho, p\u0159\u00edstup \u201ep\u0159id\u00e1v\u00e1me ve\u0161kerou funk\u010dnost do jednoho uzlu\u201c nen\u00ed \u0161k\u00e1lovateln\u00fd \u2014 rozhran\u00ed se rychle st\u00e1v\u00e1 p\u0159et\u00ed\u017een\u00fdm.<\/p>\n<p><\/p>\n<p>TestMace od za\u010d\u00e1tku d\u011bl\u00ed ve\u0161kerou funkcionalitu na r\u016fzn\u00e9 typy uzl\u016f. Chcete ud\u011blat po\u017eadavek? Tady m\u00e1te <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">request step<\/a><\/noindex> uzel. Chcete napsat skript? Tady m\u00e1te <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> uzel. Pot\u0159ebujete testy? Pros\u00edm \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Assertion<\/a><\/noindex> uzel. Aha, je\u0161t\u011b m\u016f\u017eete v\u0161echny tyto v\u011bci zabalit do <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> uzlu. A to v\u0161e se snadno kombinuje. Tento p\u0159\u00edstup je nejen velmi flexibiln\u00ed, ale tak\u00e9 v souladu s principem jedin\u00e9 odpov\u011bdnosti, co\u017e umo\u017e\u0148uje pou\u017e\u00edvat pouze to, co skute\u010dn\u011b pot\u0159ebujete v dan\u00e9m okam\u017eiku. Pro\u010d bych m\u011bl pot\u0159ebovat skripty a testy, kdy\u017e chci jen ud\u011blat po\u017eadavek?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">\u010clov\u011bku \u010diteln\u00fd form\u00e1t projektu<\/h2>\n<p><\/p>\n<p>Mezi TestMace a Postman existuje konceptu\u00e1ln\u00ed rozd\u00edl v zp\u016fsobu ukl\u00e1d\u00e1n\u00ed. V Postman jsou v\u0161echny po\u017eadavky ulo\u017eeny n\u011bkde v lok\u00e1ln\u00edm \u00falo\u017ei\u0161ti. Pokud je pot\u0159eba sd\u00edlet po\u017eadavky mezi v\u00edce u\u017eivateli, je t\u0159eba vyu\u017e\u00edt integrovanou synchronizaci. Ve skute\u010dnosti je to obecn\u011b p\u0159ijat\u00fd p\u0159\u00edstup, kter\u00fd v\u0161ak nen\u00ed bez nedostatk\u016f. Jak je to s bezpe\u010dnost\u00ed dat? V\u017edy\u0165 politika n\u011bkter\u00fdch spole\u010dnost\u00ed m\u016f\u017ee zakazovat ukl\u00e1dat data u t\u0159et\u00edch stran. Av\u0161ak v\u011b\u0159\u00edme, \u017ee TestMace m\u016f\u017ee nab\u00eddnout n\u011bco lep\u0161\u00edho! A n\u00e1zev tohoto zlep\u0161en\u00ed je \u201e\u010diteln\u00e9ho form\u00e1tu projektu\u201c.<\/p>\n<p><\/p>\n<p>Za\u010dneme t\u00edm, \u017ee v TestMace existuje entita \u201eprojekt\u201c. A aplikace byla p\u016fvodn\u011b navr\u017eena s c\u00edlem ukl\u00e1dat projekty v syst\u00e9mech pro spr\u00e1vu verz\u00ed: struktura projektu se prakticky zcela prom\u00edt\u00e1 do souborov\u00e9 struktury, jako form\u00e1t ukl\u00e1d\u00e1n\u00ed se pou\u017e\u00edv\u00e1 yaml (bez zbyte\u010dn\u00fdch z\u00e1vorek a \u010d\u00e1rek), a souborov\u00e9 zobrazen\u00ed ka\u017ed\u00e9ho uzlu je podrobn\u011b pops\u00e1no v dokumentaci s koment\u00e1\u0159i. V\u011bt\u0161inou ale nebudete muset do dokumentace nahl\u00ed\u017eet \u2014 v\u0161echna n\u00e1zvy pol\u00ed maj\u00ed logick\u00e1 ozna\u010den\u00ed. <\/p>\n<p><\/p>\n<p>Co to u\u017eivatelovi p\u0159in\u00e1\u0161\u00ed? To umo\u017e\u0148uje velmi flexibiln\u011b m\u011bnit workflow t\u00fdmu, p\u0159i\u010dem\u017e se vyu\u017e\u00edvaj\u00ed b\u011b\u017en\u00e9 p\u0159\u00edstupy. Nap\u0159\u00edklad, v\u00fdvoj\u00e1\u0159i mohou uchov\u00e1vat projekt ve stejn\u00e9m repozit\u00e1\u0159i jako backend. Ve v\u011btv\u00edch, krom\u011b zm\u011bn p\u0159\u00edmo v k\u00f3dov\u00e9 z\u00e1kladn\u011b, m\u016f\u017ee v\u00fdvoj\u00e1\u0159 upravit st\u00e1vaj\u00edc\u00ed sc\u00e9n\u00e1\u0159e po\u017eadavk\u016f a testy. Po zafixov\u00e1n\u00ed zm\u011bn v repozit\u00e1\u0159i (git, svn, mercurial \u2014 co preferujete) CI (v\u00e1\u0161 obl\u00edben\u00fd, nik\u00fdm nevnucovan\u00fd) spou\u0161t\u00ed na\u0161i konzolovou utilitu <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, a v\u00fdstupn\u00ed zpr\u00e1va (nap\u0159\u00edklad ve form\u00e1tu junit, kter\u00fd tak\u00e9 podporuje testmace-cli) se odes\u00edl\u00e1 do p\u0159\u00edslu\u0161n\u00e9ho syst\u00e9mu. A v\u00fd\u0161e uveden\u00fd probl\u00e9m s bezpe\u010dnost\u00ed u\u017e nen\u00ed probl\u00e9mem.<\/p>\n<p><\/p>\n<p>Jak vid\u00edte, TestMace nenut\u00ed svou ekosyst\u00e9my a paradigmata. M\u00edsto toho se snadno integruje do ji\u017e zaveden\u00fdch proces\u016f.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Dynamick\u00e9 prom\u011bnn\u00e9<\/h2>\n<p><\/p>\n<p>TestMace se \u0159\u00edd\u00ed konceptem no-code: pokud je probl\u00e9m mo\u017en\u00e9 vy\u0159e\u0161it bez pou\u017eit\u00ed k\u00f3du, sna\u017e\u00edme se takovou mo\u017enost nab\u00eddnout. Pr\u00e1ce s prom\u011bnn\u00fdmi je pr\u00e1v\u011b ta funkce, kde se ve v\u011bt\u0161in\u011b p\u0159\u00edpad\u016f d\u00e1 obej\u00edt bez programov\u00e1n\u00ed.<\/p>\n<p><\/p>\n<p>P\u0159\u00edklad: dostali jsme odpov\u011b\u010f ze serveru a chceme ulo\u017eit \u010d\u00e1st odpov\u011bdi do prom\u011bnn\u00e9. V Postmanu bychom v testovac\u00edm skriptu (co\u017e je samo o sob\u011b divn\u00e9) napsali n\u011bco ve smyslu:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", jsonData.data);<\/code><\/pre>\n<p><\/p>\n<p>Ale podle na\u0161eho n\u00e1zoru vypad\u00e1 psan\u00ed skriptu pro tak jednoduch\u00fd a \u010dasto pou\u017e\u00edvan\u00fd sc\u00e9n\u00e1\u0159 nadbyte\u010dn\u011b. Proto v TestMace existuje mo\u017enost p\u0159i\u0159adit prom\u011bnn\u00e9 \u010d\u00e1st odpov\u011bdi pomoc\u00ed grafick\u00e9ho rozhran\u00ed. Pod\u00edvejte se, jak je to jednoduch\u00e9:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A nyn\u00ed se p\u0159i ka\u017ed\u00e9m po\u017eadavku tato dynamick\u00e1 prom\u011bnn\u00e1 aktualizuje. M\u016f\u017eete v\u0161ak nam\u00edtnout, \u017ee p\u0159\u00edstup Postmana je flexibiln\u011bj\u0161\u00ed a umo\u017e\u0148uje nejen p\u0159i\u0159azen\u00ed, ale tak\u00e9 proveden\u00ed ur\u010dit\u00e9 p\u0159edzpracov\u00e1n\u00ed. Zde je zp\u016fsob, jak lze upravit p\u0159edchoz\u00ed p\u0159\u00edklad:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">var jsonData = JSON.parse(responseBody);\npostman.setEnvironmentVariable(\"data\", CryptoJS.MD5(jsonData.data));<\/code><\/pre>\n<p><\/p>\n<p>Co\u017e je v TestMace <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> uzel, kter\u00fd pokr\u00fdv\u00e1 tento sc\u00e9n\u00e1\u0159. Abychom reprodukovali p\u0159edchoz\u00ed p\u0159\u00edpad, ale u\u017e v proveden\u00ed TestMace, je t\u0159eba po po\u017eadavku vytvo\u0159it script uzel a jako skript pou\u017e\u00edt n\u00e1sleduj\u00edc\u00ed k\u00f3d:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">const data = tm.currentNode.prev.response.body.data;\ntm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));<\/code><\/pre>\n<p><\/p>\n<p>Jak vid\u00edte, kompozice uzl\u016f zde tak\u00e9 dob\u0159e poslou\u017eila. A pro tak jednoduch\u00fd p\u0159\u00edpad, jako je uveden\u00fd v\u00fd\u0161e, m\u016f\u017eete dokonce jednodu\u0161e p\u0159i\u0159adit v\u00fdraz <code>${crypto.MD5($response.data)}<\/code> prom\u011bnn\u00e9 vytvo\u0159en\u00e9 prost\u0159ednictv\u00edm grafick\u00e9ho rozhran\u00ed!<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Vytv\u00e1\u0159en\u00ed test\u016f prost\u0159ednictv\u00edm GUI<\/h2>\n<p><\/p>\n<p>Postman umo\u017e\u0148uje vytv\u00e1\u0159et testy pomoc\u00ed psan\u00ed skript\u016f (v p\u0159\u00edpad\u011b Postmana to je JavaScript). Tento p\u0159\u00edstup m\u00e1 spoustu v\u00fdhod - prakticky neomezenou flexibilitu, existenci hotov\u00fdch \u0159e\u0161en\u00ed atd.<\/p>\n<p><\/p>\n<p>Realita je v\u0161ak \u010dasto takov\u00e1 (nejsme takov\u00ed, \u017eivot je takov\u00fd), \u017ee tester nem\u00e1 program\u00e1torsk\u00e9 dovednosti, a p\u0159esto by cht\u011bl t\u00fdmu p\u0159in\u00e1\u0161et p\u0159\u00ednos u\u017e nyn\u00ed. Pro takov\u00e9 p\u0159\u00edpady, v souladu s konceptem no-code, TestMace umo\u017e\u0148uje vytv\u00e1\u0159et jednoduch\u00e9 testy prost\u0159ednictv\u00edm grafick\u00e9ho rozhran\u00ed, ani\u017e by bylo nutn\u00e9 ps\u00e1t skripty. Takhle nap\u0159\u00edklad vypad\u00e1 proces vytv\u00e1\u0159en\u00ed testu, kter\u00fd porovn\u00e1v\u00e1 hodnoty na rovnost:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nicm\u00e9n\u011b vytv\u00e1\u0159en\u00ed test\u016f v grafick\u00e9m editoru neodstra\u0148uje mo\u017enost <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">psan\u00ed test\u016f v k\u00f3du<\/a><\/noindex>. Zde jsou v\u0161echny stejn\u00e9 knihovny jako ve script uzlu, a <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> pro psan\u00ed test\u016f.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">Mo\u017enost spustit ji\u017e existuj\u00edc\u00ed sc\u00e9n\u00e1\u0159 prost\u0159ednictv\u00edm odkazu (Link uzel)<\/h2>\n<p><\/p>\n<p>Se \u010dasto vyskytuj\u00ed situace, kdy je t\u0159eba prov\u00e9st ur\u010dit\u00fd po\u017eadavek nebo dokonce cel\u00fd sc\u00e9n\u00e1\u0159 n\u011bkolikr\u00e1t na r\u016fzn\u00fdch m\u00edstech projektu. P\u0159\u00edkladem takov\u00fdch po\u017eadavk\u016f m\u016f\u017ee b\u00fdt vlastn\u00ed v\u00edcestup\u0148ov\u00e1 autorizace, uveden\u00ed prost\u0159ed\u00ed do po\u017eadovan\u00e9ho stavu atd. Obecn\u011b, pokud mluv\u00edme v term\u00ednech programovac\u00edch jazyk\u016f, cht\u011bli bychom m\u00edt funkce, kter\u00e9 lze znovu pou\u017e\u00edvat na r\u016fzn\u00fdch m\u00edstech aplikace. V TestMace tuto funkci vykon\u00e1v\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">link<\/a><\/noindex> uzel. Pou\u017e\u00edv\u00e1n\u00ed je velmi jednoduch\u00e9:<br \/>\n1) vytvo\u0159te po\u017eadavek nebo sc\u00e9n\u00e1\u0159<br \/>\n2) vytvo\u0159te uzel typu Link<br \/>\n3) v parametrech uve\u010fte odkaz na sc\u00e9n\u00e1\u0159 vytvo\u0159en\u00fd v prvn\u00edm kroku<\/p>\n<p><\/p>\n<p>V pokro\u010dilej\u0161\u00ed variant\u011b m\u016f\u017eete ur\u010dit, jak\u00e9 dynamick\u00e9 prom\u011bnn\u00e9 ze sc\u00e9n\u00e1\u0159e p\u0159en\u00e1\u0161et na \u00farove\u0148 v\u00fd\u0161e vzhledem k odkazu. Zn\u00ed to zmaten\u011b? P\u0159edstavme si, \u017ee jsme vytvo\u0159ili slo\u017eku s n\u00e1zvem <strong>vytvo\u0159it-p\u0159\u00edsp\u011bvek<\/strong>, uvnit\u0159 kter\u00e9 je k tomuto uzlu p\u0159i\u0159azena dynamick\u00e1 prom\u011bnn\u00e1 <code>postId<\/code>. Nyn\u00ed v uzlu Link <strong>create-post-link<\/strong> m\u016f\u017eete jasn\u011b uv\u00e9st, \u017ee prom\u011bnn\u00e1 <code>postId<\/code> by m\u011bla b\u00fdt p\u0159i\u0159azena rodi\u010di <strong>create-post-link<\/strong>. Tento mechanismus (op\u011bt, vyjad\u0159uj\u00edc se program\u00e1torsk\u00fdm jazykem) lze pou\u017e\u00edt pro vr\u00e1cen\u00ed v\u00fdsledku z \u201efunkce\u201c. Obecn\u011b skv\u011bl\u00e9, DRY v pln\u00e9 s\u00edle a op\u011bt \u017e\u00e1dn\u00fd \u0159\u00e1dek k\u00f3du neutrp\u011bl.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pokud jde o Postman, feature request na znovupou\u017eit\u00ed po\u017eadavk\u016f <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">vis\u00ed od roku 2015<\/a><\/noindex>, a zd\u00e1 se, \u017ee dokonce existuj\u00ed <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">n\u011bjak\u00e9 n\u00e1znaky<\/a><\/noindex>, \u017ee na tomto probl\u00e9mu se pracuje. V aktu\u00e1ln\u00ed podob\u011b m\u00e1 Postman samoz\u0159ejm\u011b mo\u017enost zm\u011bnit tok vykon\u00e1v\u00e1n\u00ed, co\u017e teoreticky mo\u017en\u00e1 umo\u017e\u0148uje realizovat podobn\u00e9 chov\u00e1n\u00ed, ale to je sp\u00ed\u0161e \u0161pinav\u00fd hack ne\u017e opravdu funk\u010dn\u00ed p\u0159\u00edstup. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Dal\u0161\u00ed rozd\u00edly<\/h2>\n<p><\/p>\n<ul>\n<li>V\u011bt\u0161\u00ed kontrola nad oblast\u00ed viditelnosti prom\u011bnn\u00fdch. Nejmen\u0161\u00ed scope, uvnit\u0159 kter\u00e9ho lze v Postman ur\u010dovat prom\u011bnnou, je collection. TestMace umo\u017e\u0148uje definovat prom\u011bnn\u00e9 pro jak\u00fdkoliv po\u017eadavek nebo slo\u017eku. V Postman Share collection umo\u017e\u0148uje exportovat pouze sb\u00edrky, zat\u00edmco v TestMace sharing funguje pro jak\u00fdkoliv uzel.<\/li>\n<li>TestMace podporuje <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">d\u011bdi\u010dn\u00e9 hlavi\u010dky<\/a><\/noindex>, kter\u00e9 se ve v\u00fdchoz\u00edm nastaven\u00ed mohou zav\u00e1d\u011bt do pod\u0159\u00edzen\u00fdch po\u017eadavk\u016f. V Postman k tomu existuje <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">\u00fakol<\/a><\/noindex>, a je dokonce uzav\u0159ena, ale jako \u0159e\u0161en\u00ed se navrhuje\u2026 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">pou\u017e\u00edt skripty<\/a><\/noindex>. V TestMace je to v\u0161e konfigurov\u00e1no p\u0159es GUI a existuje mo\u017enost voliteln\u00e9ho vypnut\u00ed d\u011bdi\u010dn\u00fdch hlavi\u010dek v konkr\u00e9tn\u00edch potomc\u00edch.<\/li>\n<li>Undo\/Redo. Funguje nejen p\u0159i \u00faprav\u011b uzl\u016f, ale tak\u00e9 p\u0159i p\u0159esouv\u00e1n\u00ed, maz\u00e1n\u00ed, p\u0159ejmenov\u00e1n\u00ed a dal\u0161\u00edch operac\u00edch, kter\u00e9 m\u011bn\u00ed strukturu projektu.<\/li>\n<li>Soubory p\u0159ipojen\u00e9 k po\u017eadavk\u016fm se st\u00e1vaj\u00ed sou\u010d\u00e1st\u00ed projektu a jsou ukl\u00e1d\u00e1ny spolu s n\u00edm, p\u0159i\u010dem\u017e se skv\u011ble synchronizuj\u00ed, na rozd\u00edl od Postman. (Ano, u\u017e nen\u00ed nutn\u00e9 ka\u017ed\u00fdkr\u00e1t ru\u010dn\u011b vyb\u00edrat soubory p\u0159i ka\u017ed\u00e9m spu\u0161t\u011bn\u00ed a pos\u00edlat je koleg\u016fm v archivech).<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Funkce, kter\u00e9 jsou ji\u017e na cest\u011b.<\/h2>\n<p><\/p>\n<p>Nemohli jsme odolat poku\u0161en\u00ed poodhalit rou\u0161ku tajemstv\u00ed ohledn\u011b na\u0161ich pl\u00e1novan\u00fdch vyd\u00e1n\u00ed, zejm\u00e9na kdy\u017e je funk\u010dnost velmi l\u00e1kav\u00e1 a ji\u017e prob\u00edh\u00e1 p\u0159edpublika\u010dn\u00ed lad\u011bn\u00ed. Tak\u017ee, p\u0159iv\u00edtejte.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Funkce<\/h3>\n<p><\/p>\n<p>Jak je zn\u00e1mo, pro generov\u00e1n\u00ed hodnot v Postmanu se pou\u017e\u00edvaj\u00ed takzvan\u00e9 dynamick\u00e9 prom\u011bnn\u00e9. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">Jejich seznam je impozantn\u00ed<\/a><\/noindex> a drtiv\u00e1 v\u011bt\u0161ina funkc\u00ed slou\u017e\u00ed k generov\u00e1n\u00ed fale\u0161n\u00fdch hodnot. Nap\u0159\u00edklad pro generaci n\u00e1hodn\u00e9ho e-mailu je t\u0159eba napsat:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{$randomEmail}}<\/code><\/pre>\n<p><\/p>\n<p>Je v\u0161ak t\u0159eba m\u00edt na pam\u011bti, \u017ee jako prom\u011bnn\u00e9 (i kdy\u017e dynamick\u00e9) je nelze pou\u017e\u00edvat jako funkce: nejsou parametrizovateln\u00e9, a proto nelze z\u00edskat hash ze \u0159et\u011bzce.<\/p>\n<p><\/p>\n<p>V TestMace pl\u00e1nujeme p\u0159idat \u201ef\u00e9rov\u00e9\u201c funkce. P\u0159\u00edmo uvnit\u0159 ${} bude mo\u017en\u00e9 nejen obr\u00e1tit se na prom\u011bnnou, ale tak\u00e9 zavolat funkci. To znamen\u00e1, \u017ee pokud pot\u0159ebujeme vygenerovat pov\u011bstn\u00fd fale\u0161n\u00fd e-mail, jednodu\u0161e nap\u00ed\u0161eme<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>Krom\u011b toho, \u017ee se jedn\u00e1 o funkci, si lze pov\u0161imnout, \u017ee existuje mo\u017enost vol\u00e1n\u00ed metod objektu. A m\u00edsto velk\u00e9ho ploch\u00e9ho seznamu dynamick\u00fdch prom\u011bnn\u00fdch m\u00e1me sadu logicky seskupen\u00fdch objekt\u016f.<\/p>\n<p><\/p>\n<p>A co kdy\u017e chceme spo\u010d\u00edtat hash ze \u0159et\u011bzce? Snadno!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>Je mo\u017en\u00e9 si v\u0161imnout, \u017ee jako parametry lze p\u0159ed\u00e1vat dokonce i prom\u011bnn\u00e9! V tomto okam\u017eiku by si zv\u00eddav\u00fd \u010dten\u00e1\u0159 mohl pomyslet, \u017ee n\u011bco nen\u00ed v po\u0159\u00e1dku... <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Pou\u017eit\u00ed JavaScriptu ve v\u00fdrazech<\/h3>\n<p><\/p>\n<p>... A nen\u00ed divu! Kdy\u017e jsme formulovali po\u017eadavky na funkce, n\u00e1hle jsme do\u0161li k z\u00e1v\u011bru, \u017ee je t\u0159eba umo\u017enit psan\u00ed platn\u00e9ho JavaScriptu ve v\u00fdrazech. Proto nyn\u00ed m\u00e1te volnost ps\u00e1t v\u00fdrazy ve stylu:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>A to v\u0161e bez skript\u016f p\u0159\u00edmo v textov\u00fdch pol\u00edch!<\/p>\n<p><\/p>\n<p>Pokud jde o Postman, zde je mo\u017en\u00e9 pou\u017e\u00edvat pouze prom\u011bnn\u00e9, a p\u0159i pokusu napsat jak\u00fdkoli v\u00fdraze, valid\u00e1tor protestuje a odm\u00edt\u00e1 ho vyhodnocovat.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Pokro\u010dil\u00e9 automatick\u00e9 dopl\u0148ov\u00e1n\u00ed<\/h3>\n<p><\/p>\n<p>V sou\u010dasn\u00e9 dob\u011b m\u00e1 TestMace standardn\u00ed automatick\u00e9 dopl\u0148ov\u00e1n\u00ed, kter\u00e9 vypad\u00e1 n\u00e1sledovn\u011b:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Zde je krom\u011b automaticky dopl\u0148ovan\u00e9 \u0159et\u011bzce uvedeno, k \u010demu pat\u0159\u00ed dan\u00fd \u0159et\u011bzec. Tento mechanismus funguje pouze ve v\u00fdrazech uzav\u0159en\u00fdch v z\u00e1vork\u00e1ch ${}.<\/p>\n<p><\/p>\n<p>Jak m\u016f\u017eete vid\u011bt, p\u0159ibyly vizu\u00e1ln\u00ed markery, kter\u00e9 ukazuj\u00ed typ prom\u011bnn\u00e9 (nap\u0159\u00edklad \u0159et\u011bzec, \u010d\u00edslo, pole atd.). Tak\u00e9 m\u016f\u017eete m\u011bnit re\u017eimy automatick\u00e9ho dopl\u0148ov\u00e1n\u00ed (nap\u0159\u00edklad si m\u016f\u017eete vybrat automatick\u00e9 dopl\u0148ov\u00e1n\u00ed prom\u011bnn\u00fdmi nebo hlavi\u010dkami). Ale to je\u0161t\u011b nen\u00ed to hlavn\u00ed!<\/p>\n<p><\/p>\n<p>Za prv\u00e9, automatick\u00e9 dopl\u0148ov\u00e1n\u00ed funguje i ve v\u00fdrazech (kde je to mo\u017en\u00e9). Takto to vypad\u00e1:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A za druh\u00e9, nyn\u00ed je automatick\u00e9 dopl\u0148ov\u00e1n\u00ed dostupn\u00e9 i ve skriptech. Pod\u00edvejte se, jak to funguje!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tento funk\u010dn\u00ed prvek nem\u00e1 smysl srovn\u00e1vat s Postman \u2014 tam je automatick\u00e9 dopl\u0148ov\u00e1n\u00ed omezeno pouze na statick\u00e9 seznamy prom\u011bnn\u00fdch, hlavi\u010dek a jejich hodnot (opravte m\u011b, pokud jsem n\u011bco zapomn\u011bl). Skripty se nedopl\u0148uj\u00ed \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Z\u00e1v\u011br<\/h1>\n<p><\/p>\n<p>V \u0159\u00edjnu uplynul rok od zah\u00e1jen\u00ed v\u00fdvoje na\u0161eho produktu. B\u011bhem t\u00e9to doby jsme stihli ud\u011blat spoustu v\u011bc\u00ed a v n\u011bkter\u00fdch ohledech jsme dohnali na\u0161e konkurenty. Ale a\u0165 u\u017e je to jakkoli, na\u0161\u00edm c\u00edlem je vytvo\u0159it opravdu pohodln\u00fd n\u00e1stroj pro pr\u00e1ci s API. Je\u0161t\u011b n\u00e1s \u010dek\u00e1 spousta pr\u00e1ce, zde je p\u0159ibli\u017en\u00fd pl\u00e1n rozvoje na\u0161eho projektu na p\u0159\u00ed\u0161t\u00ed rok: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Va\u0161e zp\u011btn\u00e1 vazba n\u00e1m umo\u017en\u00ed l\u00e9pe se orientovat v mno\u017estv\u00ed funkc\u00ed, a va\u0161e podpora n\u00e1m dod\u00e1v\u00e1 s\u00edlu a jistotu, \u017ee d\u011bl\u00e1me spr\u00e1vnou v\u011bc. Dnes se uk\u00e1zalo, \u017ee je d\u016fle\u017eit\u00fd den pro n\u00e1\u0161 projekt \u2014 den zve\u0159ejn\u011bn\u00ed TestMace na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. Pros\u00edm, podpo\u0159te n\u00e1\u0161 projekt, je to pro n\u00e1s velmi d\u016fle\u017eit\u00e9. T\u00edm sp\u00ed\u0161e, \u017ee dnes m\u00e1me na na\u0161\u00ed PH str\u00e1nce l\u00e1kavou nab\u00eddku, kter\u00e1 je omezen\u00e1<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/480734\/\">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, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438 TestMace! \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043c\u043d\u043e\u0433\u0438\u0435 \u0437\u043d\u0430\u044e\u0442 \u043e \u043d\u0430\u0441 \u0438\u0437 \u043d\u0430\u0448\u0438\u0445 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u0435\u0439. \u0414\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u043b\u0441\u044f: \u043c\u044b \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u043c IDE \u0434\u043b\u044f \u0440\u0430\u0431\u043e\u0442\u044b \u0441 API TestMace. \u0421\u0430\u043c\u044b\u0439 \u0447\u0430\u0441\u0442\u043e \u0437\u0430\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u043f\u0440\u0438 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0438 TestMace \u0441 \u043a\u043e\u043d\u043a\u0443\u0440\u0438\u0440\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u0430\u043c\u0438 \u2014 &#171;\u0427\u0435\u043c \u0432\u044b \u043e\u0442\u043b\u0438\u0447\u0430\u0435\u0442\u0435\u0441\u044c \u043e\u0442 Postman?&#187;. \u041c\u044b \u0440\u0435\u0448\u0438\u043b\u0438, \u0447\u0442\u043e \u043f\u043e\u0440\u0430 \u0434\u0430\u0442\u044c \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0434\u0430\u043d\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441. \u041d\u0438\u0436\u0435 \u043c\u044b [&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-54188","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, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\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\/chem-testmace-luchshe-postman\" \/>\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\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/news\/chem-testmace-luchshe-postman\" \/>\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\udd47\u010c\u00edm je TestMace lep\u0161\u00ed ne\u017e Postman | ProHoster","description":"Ahoj v\u0161ichni, tady je","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/chem-testmace-luchshe-postman","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\udd47\u0427\u0435\u043c TestMace \u043b\u0443\u0447\u0448\u0435 Postman | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442, \u043d\u0430 \u0441\u0432\u044f\u0437\u0438","og:url":"https:\/\/prohoster.info\/cs\/blog\/news\/chem-testmace-luchshe-postman","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":"54188","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\/54188","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=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}