{"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\/ro\/blog\/news\/chem-testmace-luchshe-postman","title":{"rendered":"Cu ce este TestMace mai bun dec\u00e2t Postman","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/4b61986c287c32a4cefeb2f805fc228f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Salut tuturor, sunt aici <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/\">TestMace<\/a><\/noindex>! Este posibil ca mul\u021bi dintre voi s\u0103 ne cunoa\u0219te\u021bi din <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458372\/\">precedentele noastre<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/462585\/\">. Pentru cei care s-au al\u0103turat recent: dezvolt\u0103m un IDE pentru a lucra cu API-ul TestMace. Cea mai frecvent\u0103 \u00eentrebare c\u00e2nd compar\u0103m TestMace cu produsele concurente este: \u201eCe v\u0103 diferen\u021biaz\u0103 de Postman?\u201d. Am decis c\u0103 este timpul s\u0103 oferim un r\u0103spuns detaliat la aceast\u0103 \u00eentrebare. Mai jos am enumerat avantajele noastre \u00een fa\u021ba<\/a><\/noindex> <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/458964\/\">articolele noastre<\/a><\/noindex>. Pentru cei care s-au conectat recent: dezvolt\u0103m un IDE pentru lucrul cu API-ul TestMace. Cea mai frecvent\u0103 \u00eentrebare c\u00e2nd compari TestMace cu produsele concurente este \u201eCu ce \u200b\u200bte deosebe\u0219ti de Postman?\u201d. Am decis c\u0103 este timpul s\u0103 d\u0103m un r\u0103spuns detaliat la aceast\u0103 \u00eentrebare. Mai jos am enumerat avantajele noastre fa\u021b\u0103 de <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\">Divizarea \u00een noduri<\/h2>\n<p><\/p>\n<p>Dac\u0103 lucrezi cu Postman, \u0219tii c\u0103 interfa\u021ba cererii con\u021bine toat\u0103 func\u021bionalitatea necesar\u0103. Aici sunt scripturi, teste \u0219i, \u00een esen\u021b\u0103, cererile propriu-zise. Acest lucru simplific\u0103 lucrul pentru \u00eencep\u0103tori, dar pe scenarii mari, aceast\u0103 abordare nu este flexibil\u0103. Ce se \u00eent\u00e2mpl\u0103 dac\u0103 vrei s\u0103 creezi mai multe cereri \u0219i s\u0103 faci agregare pe ele? Ce se \u00eent\u00e2mpl\u0103 dac\u0103 vrei s\u0103 execu\u021bi un script f\u0103r\u0103 cerere sau mai multe scripturi logic separate \u00een ordine? \u00cen cele din urm\u0103, ar fi bine s\u0103 separi testele de scripturile utilitare obi\u0219nuite. Pe l\u00e2ng\u0103 aceasta, abordarea \u201ead\u0103ug\u0103m toat\u0103 func\u021bionalitatea \u00eentr-un singur nod\u201d nu este scalabil\u0103 \u2014 interfa\u021ba devine rapid supra\u00eenc\u0103rcat\u0103.<\/p>\n<p><\/p>\n<p>TestMace separ\u0103 de la bun \u00eenceput \u00eentreaga func\u021bionalitate \u00een diferite tipuri de noduri. Vrei s\u0103 faci o solicitare? Iat\u0103-\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/requeststep\">request step<\/a><\/noindex> nod. Vrei s\u0103 scrii un script? Iat\u0103-\u021bi <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> nod. Ai nevoie de teste? Te rog \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\">Afirmarea<\/a><\/noindex> nod. Oh da, po\u021bi \u00eenf\u0103\u0219ura toate acestea \u00eentr-un <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/folder\">folder<\/a><\/noindex> nod. \u0218i toate acestea se combin\u0103 u\u0219or \u00eentre ele. Aceast\u0103 abordare nu numai c\u0103 este foarte flexibil\u0103, dar, conform principiului responsabilit\u0103\u021bii unice, permite utilizarea doar a ceea ce ai cu adev\u0103rat nevoie \u00een momentul respectiv. De ce am nevoie de scripturi \u0219i teste, dac\u0103 vreau doar s\u0103 fac o solicitare?<\/p>\n<p><\/p>\n<h2 id=\"chelovekochitaemyy-format-proekta\">Formatul proiectului u\u0219or de citit<\/h2>\n<p><\/p>\n<p>\u00centre TestMace \u0219i Postman exist\u0103 o diferen\u021b\u0103 conceptual\u0103 \u00een modul de stocare. \u00cen Postman, toate cererile sunt stocate undeva \u00een stocarea local\u0103. Dac\u0103 trebuie s\u0103 partajezi cererile \u00eentre mai mul\u021bi utilizatori, trebuie s\u0103 folose\u0219ti sincronizarea \u00eencorporat\u0103. De fapt, acesta este un mod acceptat, dar nu f\u0103r\u0103 dezavantaje. Ce zici de securitatea datelor? Politica unor companii poate interzice stocarea datelor la ter\u021bi. Cu toate acestea, consider\u0103m c\u0103 TestMace poate oferi ceva mai bun! Iar numele acestei \u00eembun\u0103t\u0103\u021biri este \u201eformatul de proiect u\u0219or de citit\u201d.<\/p>\n<p><\/p>\n<p>S\u0103 \u00eencepem prin a men\u021biona c\u0103 \u00een TestMace exist\u0103 o entitate denumit\u0103 \u201eproiect\u201d. Aplica\u021bia a fost conceput\u0103 ini\u021bial pentru a stoca proiecte \u00een sisteme de control al versiunilor: structura arborelui proiectului se proiecteaz\u0103 practic 1:1 pe structura de fi\u0219iere, iar formatul de stocare utilizat este yaml (f\u0103r\u0103 paranteze \u0219i virgule suplimentare), iar reprezentarea fi\u0219ierului fiec\u0103rui nod este detaliat\u0103 \u00een documenta\u021bia cu comentarii. \u00cens\u0103, \u00een cele mai multe cazuri, nu ve\u021bi avea nevoie s\u0103 accesa\u021bi aceste detalii \u2014 toate numele c\u00e2mpurilor au denumiri logice. <\/p>\n<p><\/p>\n<p>Ce ofer\u0103 utilizatorului? Aceasta permite o modificare foarte flexibil\u0103 a fluxului de lucru al echipei, utiliz\u00e2nd abord\u0103ri familiare. De exemplu, dezvoltatorii pot stoca proiectul \u00een acela\u0219i depozit cu backend-ul. \u00cen ramuri, pe l\u00e2ng\u0103 modificarea efectiv\u0103 a bazei de cod, dezvoltatorul poate corecta scenariile de cereri existente \u0219i testele. Dup\u0103 ce modific\u0103rile sunt confirmate \u00een depozit (git, svn, mercurial \u2014 ce prefera\u021bi), CI (preferatul vostru, impus de nimeni) ruleaz\u0103 utilitarul nostru din linia de comand\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.npmjs.com\/package\/@testmace\/cli\">testmace-cli<\/a><\/noindex>, iar raportul generat \u00een urma execu\u021biei (de exemplu, \u00een format junit, care este, de asemenea, acceptat \u00een testmace-cli) este trimis \u00een sistemul corespunz\u0103tor. De asemenea, problema men\u021bionat\u0103 anterior cu securitatea nu mai reprezint\u0103 o problem\u0103.<\/p>\n<p><\/p>\n<p>Dup\u0103 cum vede\u021bi, TestMace nu impune ecosistemul \u0219i paradigma sa. \u00cen schimb, se integreaz\u0103 u\u0219or \u00een procesele deja stabilite.<\/p>\n<p><\/p>\n<h2 id=\"dinamicheskie-peremennye\">Variabile dinamice<\/h2>\n<p><\/p>\n<p>TestMace urmeaz\u0103 conceptul no-code: dac\u0103 o problem\u0103 poate fi rezolvat\u0103 f\u0103r\u0103 utilizarea codului, ne str\u0103duim s\u0103 oferim aceast\u0103 posibilitate. Lucrul cu variabilele este exact func\u021bionalitatea \u00een care, \u00een cele mai multe cazuri, se poate evita programarea.<\/p>\n<p><\/p>\n<p>Exemplu: am primit un r\u0103spuns de la server \u0219i dorim s\u0103 salv\u0103m o parte din r\u0103spuns \u00eentr-o variabil\u0103. \u00cen Postman, am scrie \u00een scriptul de testare (ceea ce este ciudat \u00een sine) ceva de genul:<\/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>Dar, \u00een opinia noastr\u0103, scrierea unui script pentru un scenariu at\u00e2t de simplu \u0219i utilizat frecvent pare excesiv\u0103. De aceea, \u00een TestMace ave\u021bi posibilitatea de a atribui o variabil\u0103 unei p\u0103r\u021bi din r\u0103spuns, utiliz\u00e2nd interfa\u021ba grafic\u0103. Vede\u021bi c\u00e2t de simplu este:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/2ce8ce2f9aa2964cb5bd1d5eacead423.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0218i acum, la fiecare solicitare, aceast\u0103 variabil\u0103 dinamic\u0103 va fi actualizat\u0103. Dar pute\u021bi s\u0103 obiecta\u021bi, argument\u00e2nd c\u0103 abordarea lui Postman este mai flexibil\u0103 \u0219i permite nu doar atribuirea, ci \u0219i realizarea unei prelucr\u0103ri preliminare. Iat\u0103 cum poate fi modificat exemplul anterior:<\/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>Ei bine, pentru acest lucru TestMace are <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/script\">script<\/a><\/noindex> un nod care acoper\u0103 acest scenariu. Pentru a reproduce cazul anterior, dar deja \u00een execu\u021bia TestMace, este necesar s\u0103 crea\u021bi un nod de script imediat dup\u0103 solicitare \u0219i s\u0103 folosi\u021bi urm\u0103torul cod ca script:<\/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>Dup\u0103 cum pute\u021bi vedea, compozitia nodurilor a fost de mare ajutor \u0219i aici. Iar pentru un caz at\u00e2t de simplu, precum cel descris mai sus, pute\u021bi pur \u0219i simplu s\u0103 atribui\u021bi expresia <code>${crypto.MD5($response.data)}<\/code> unei variabile create prin intermediul interfe\u021bei grafice!<\/p>\n<p><\/p>\n<h2 id=\"sozdanie-testov-cherez-gui\">Crearea testelor prin GUI<\/h2>\n<p><\/p>\n<p>Postman permite crearea testelor prin scrierea de scripturi (\u00een cazul Postman-ului, acesta este JavaScript). Aceast\u0103 abordare are numeroase avantaje \u2014 flexibilitate practic nelimitat\u0103, solu\u021bii gata de utilizare etc.<\/p>\n<p><\/p>\n<p>Cu toate acestea, realitatea este adesea astfel (nu noi suntem a\u0219a, a\u0219a e via\u021ba), \u00eenc\u00e2t testerul nu are abilit\u0103\u021bi de programare, iar echipa ar dori s\u0103 contribuie deja. Pentru astfel de cazuri, urm\u00e2nd conceptul no-code, TestMace permite crearea de teste simple prin intermediul interfe\u021bei grafice, f\u0103r\u0103 a recurge la scrierea de scripturi. Iat\u0103, de exemplu, cum arat\u0103 procesul de creare a unui test care compar\u0103 valorile pentru egalitate:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/c0a8ce4cbe264dd76e3b5d90594eeff5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cu toate acestea, crearea de teste \u00een editorul grafic nu anuleaz\u0103 posibilitatea <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/assertion\/script\">de a scrie teste \u00een cod<\/a><\/noindex>. Aici sunt acelea\u0219i biblioteci ca \u0219i \u00een nodul de script, \u0219i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.chaijs.com\/\">chai<\/a><\/noindex> pentru scrierea testelor.<\/p>\n<p><\/p>\n<h2 id=\"vozmozhnost-zapustit-uzhe-suschestvuyuschiy-scenariy-po-ssylke-link-uzel\">Posibilitatea de a rula un scenariu existent prin link (Nod Link)<\/h2>\n<p><\/p>\n<p>Adesea, apar situa\u021bii \u00een care o anumit\u0103 solicitare sau chiar un \u00eentreg scenariu trebuie s\u0103 fie executat de mai multe ori \u00een diferite p\u0103r\u021bi ale proiectului. Un exemplu al acestor solicit\u0103ri poate fi un proces de autentificare personalizat\u0103 \u00een mai multe etape, aducerea mediului \u00eentr-o stare dorit\u0103 etc. \u00cen general, dac\u0103 vorbim \u00een termeni de limbaje de programare, ar fi bine s\u0103 avem func\u021bii care pot fi reutilizate \u00een diferite p\u0103r\u021bi ale aplica\u021biei. \u00cen TestMace, aceast\u0103 func\u021bie este \u00eendeplinit\u0103 de <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/node-types\/link\">link<\/a><\/noindex> nod. Folosirea sa este foarte simpl\u0103:<br \/>\n1) crea\u021bi o cerere sau un script<br \/>\n2) crea\u021bi un nod de tip Link<br \/>\n3) \u00een parametrii specifica\u021bi linkul c\u0103tre scriptul creat la pasul anterior<\/p>\n<p><\/p>\n<p>\u00centr-o variant\u0103 mai avansat\u0103, pute\u021bi specifica ce variabile dinamice din script s\u0103 fie transferate la un nivel superior \u00een raport cu linkul. Sun\u0103 complicat? S\u0103 zicem c\u0103 am creat un Folder numit <strong>create-post<\/strong>, \u00een interiorul c\u0103ruia acest nod prime\u0219te o variabil\u0103 dinamic\u0103 <code>postId<\/code>. Acum, \u00een nodul Link <strong>create-post-link<\/strong> pute\u021bi specifica \u00een mod explicit ca variabila <code>postId<\/code> s\u0103 fie atribuit\u0103 p\u0103rintelui <strong>create-post-link<\/strong>. Acest mecanism (\u00eenc\u0103 o dat\u0103, vorbind \u00een limbajul programatorului) poate fi folosit pentru a returna un rezultat din \u201efunc\u021bie\u201d. \u00cen general, este grozav, DRY \u00een toat\u0103 splendoarea sa \u0219i din nou, niciun r\u00e2nd de cod nu a avut de suferit.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/5235473a43e5bc2e05aeb2779846245f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>C\u00e2t despre Postman, solicitarea de func\u021bii pentru reutilizarea cererilor <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535\">este activ\u0103 din 2015<\/a><\/noindex>, \u0219i se pare c\u0103 chiar exist\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1535#issuecomment-280305898\">c\u00e2teva indicii<\/a><\/noindex>, c\u0103 se lucreaz\u0103 la aceast\u0103 problem\u0103. \u00cen forma sa actual\u0103, Postman are, desigur, posibilitatea de a schimba fluxul de execu\u021bie, ceea ce \u00een teorie, probabil, permite realizarea acestui comportament, dar mai degrab\u0103 este un hack murdar dec\u00e2t o abordare realmente func\u021bional\u0103. <\/p>\n<p><\/p>\n<h2 id=\"prochie-otlichiya\">Alte diferen\u021be<\/h2>\n<p><\/p>\n<ul>\n<li>Un control mai mare asupra domeniului de vizibilitate al variabilelor. Cel mai mic domeniu \u00een care o variabil\u0103 poate fi definit\u0103 \u00een Postman este colec\u021bia. TestMace permite definirea variabilelor pentru orice cerere sau folder. \u00cen Postman, Partajarea colec\u021biei permite exportul doar al colec\u021biilor, \u00een timp ce \u00een TestMace partajarea func\u021bioneaz\u0103 pentru orice nod.<\/li>\n<li>TestMace suport\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs-ru.testmace.com\/other\/default-http-headers\">antete mo\u0219tenite<\/a><\/noindex>, care, \u00een mod implicit, pot fi aplicate cererilor copil. \u00cen Postman cu privire la acest lucru exist\u0103 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947\">o sarcin\u0103<\/a><\/noindex>, \u0219i aceasta este chiar \u00eenchis\u0103, dar ca solu\u021bie, se propune... <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/postmanlabs\/postman-app-support\/issues\/1947#issuecomment-292741840\">utilizarea scripturilor<\/a><\/noindex>. \u00cen TestMace, totul este configurat prin GUI \u0219i exist\u0103 posibilitatea de a dezactiva op\u021bional antetele mo\u0219tenite \u00een anumite copii.<\/li>\n<li>Undo\/Redo. Func\u021bioneaz\u0103 nu doar la editarea nodurilor, ci \u0219i la mutare, \u0219tergere, redenumire \u0219i alte opera\u021bii care modific\u0103 structura proiectului.<\/li>\n<li>Fi\u0219ierele ata\u0219ate cererilor devin parte din proiect \u0219i sunt stocate \u00eempreun\u0103 cu acesta, sincroniz\u00e2ndu-se perfect, spre deosebire de Postman. (Da, nu mai este necesar s\u0103 selecta\u021bi manual fi\u0219ierele la fiecare rulare \u0219i s\u0103 le transmite\u021bi colegilor \u00een arhive.)<\/li>\n<\/ul>\n<p><\/p>\n<h2 id=\"fichi-kotorye-uzhe-na-podhode\">Func\u021bii care sunt deja \u00een curs de dezvoltare<\/h2>\n<p><\/p>\n<p>Nu am putut rezista tenta\u021biei de a deschide pu\u021bin cortina misterului asupra urm\u0103toarelor lans\u0103ri, mai ales c\u00e2nd func\u021bionalitatea este foarte atr\u0103g\u0103toare \u0219i deja trece prin finisaje pre-lansare. A\u0219adar, s\u0103 salut\u0103m.<\/p>\n<p><\/p>\n<h3 id=\"funkcii\">Functions<\/h3>\n<p><\/p>\n<p>Dup\u0103 cum se \u0219tie, pentru generarea valorilor \u00een Postman se folosesc a\u0219a numitele variabile dinamice. <noindex><a rel=\"nofollow\" href=\"https:\/\/learning.getpostman.com\/docs\/postman\/variables-and-environments\/variables-list\/\">Lista lor este impresionant\u0103<\/a><\/noindex> iar majoritatea func\u021biilor servesc pentru generarea valorilor fictive. De exemplu, pentru a genera un email aleatoriu, trebuie s\u0103 scriem:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">{{$randomEmail}}<\/code><\/pre>\n<p><\/p>\n<p>Cu toate acestea, deoarece acestea sunt variabile (chiar dac\u0103 sunt dinamice), nu pot fi utilizate ca func\u021bii: nu sunt parametrizabile, a\u0219adar nu putem lua hash-ul unei string.<\/p>\n<p><\/p>\n<p>\u00cen TestMace, pl\u0103nuim s\u0103 ad\u0103ug\u0103m func\u021bii \u201ecorecte\u201d. Chiar \u00een interiorul ${} po\u021bi nu doar s\u0103 accesezi o variabil\u0103, ci \u0219i s\u0103 apelezi o func\u021bie. Adic\u0103, dac\u0103 trebuie s\u0103 generezi acel bine cunoscut email fals, pur \u0219i simplu vom scrie<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${faker.internet.email()}<\/code><\/pre>\n<p><\/p>\n<p>Pe l\u00e2ng\u0103 faptul c\u0103 este o func\u021bie, se poate observa c\u0103 exist\u0103 posibilitatea de a apela o metod\u0103 a obiectului. \u0218i \u00een locul unei liste mari plate de variabile dinamice, avem un set de obiecte grupate logic.<\/p>\n<p><\/p>\n<p>\u0218i ce se \u00eent\u00e2mpl\u0103 dac\u0103 dorim s\u0103 calcul\u0103m hash-ul unui string? Simplu!<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">${crypto.MD5($dynamicVar.data)}<\/code><\/pre>\n<p><\/p>\n<p>Se poate observa c\u0103, ca parametri, putem transmite chiar \u0219i variabile! \u00cen acest loc, cititorul curios ar putea b\u0103nuiesc ceva\u2026 <\/p>\n<p><\/p>\n<h3 id=\"ispolzovanie-javascript-v-vyrazheniyah\">Folosirea JavaScript \u00een expresii<\/h3>\n<p><\/p>\n<p>\u2026 \u0218i pe bun\u0103 dreptate! Atunci c\u00e2nd au fost formulat cerin\u021bele pentru func\u021bii, am ajuns brusc la concluzia c\u0103 \u00een expresii trebuie s\u0103 permitem scrierea de JavaScript valid. A\u0219adar, acum e\u0219ti liber s\u0103 scrii expresii \u00een stilul:<\/p>\n<p><\/p>\n<pre><code class=\"javascript\">${1 + '' + crypto.MD5('asdf')}<\/code><\/pre>\n<p><\/p>\n<p>\u0218i totul f\u0103r\u0103 scripturi direct \u00een c\u00e2mpurile de introducere!<\/p>\n<p><\/p>\n<p>\u00cen ceea ce prive\u0219te Postman, aici po\u021bi folosi doar variabile, iar, \u00een \u00eencercarea de a scrie o expresie minim\u0103, validatoarele refuz\u0103 s\u0103 o calculeze.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/b301760640ff15ea682e9dfb1462116b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h3 id=\"prodvinutoe-avtodopolnenie\">Autocompletare avansat\u0103<\/h3>\n<p><\/p>\n<p>\u00cen prezent, TestMace dispune de o autocompletare standard, care arat\u0103 astfel:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/1f5ec38a6a6da29e8308882d271b6b14.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aici, pe l\u00e2ng\u0103 \u0219irul autocompletabil, se indic\u0103 la ce apar\u021bine acest \u0219ir. Acest mecanism func\u021bioneaz\u0103 doar \u00een expresii \u00eenchise \u00eentre ${}.<\/p>\n<p><\/p>\n<p>A\u0219a cum pute\u021bi observa, au fost ad\u0103ugate marcaje vizuale care indic\u0103 tipul variabilei (de exemplu, \u0219ir, num\u0103r, tabl\u0103 etc.). De asemenea, este posibil s\u0103 schimba\u021bi modurile de completare automat\u0103 (de exemplu, pute\u021bi alege completarea automat\u0103 cu variabile sau antete). Dar chiar \u0219i asta nu este cel mai important!<\/p>\n<p><\/p>\n<p>\u00cen primul r\u00e2nd, completarea automat\u0103 func\u021bioneaz\u0103 chiar \u0219i \u00een expresii (acolo unde este posibil). Iat\u0103 cum arat\u0103 asta:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/676721c8d12f6c43970ed335deb238f7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>\u0218i \u00een al doilea r\u00e2nd, acum completarea automat\u0103 este disponibil\u0103 \u0219i \u00een scripturi. Uita\u021bi cum func\u021bioneaz\u0103!<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Cu ce este TestMace mai bun dec\u00e2t Postman\" src=\"\/wp-content\/uploads\/2019\/12\/3b6b4335447c0cbed7044d98831001dc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nu are sens s\u0103 compar\u0103m aceast\u0103 func\u021bionalitate cu Postman \u2014 acolo, completarea automat\u0103 este limitat\u0103 doar la listele statice ale variabilelor, antetelor \u0219i valorilor lor (corecta\u021bi-m\u0103 dac\u0103 am uitat ceva). Scripturile nu beneficiaz\u0103 de completare automat\u0103 \ud83d\ude41<\/p>\n<p><\/p>\n<h1 id=\"zaklyuchenie\">Concluzie<\/h1>\n<p><\/p>\n<p>\u00cen octombrie s-a \u00eemplinit un an de la \u00eenceperea dezvolt\u0103rii produsului nostru. \u00cen acest timp, am reu\u0219it s\u0103 facem multe lucruri \u0219i, pe anumite dimensiuni, am ajuns din urm\u0103 concuren\u021bii no\u0219tri. Dar, oricum, obiectivul nostru este de a crea un instrument cu adev\u0103rat confortabil pentru lucrul cu API. Ne mai a\u0219teapt\u0103 mult\u0103 munc\u0103, iat\u0103 un plan aproximativ de dezvoltare a proiectului nostru pentru anul urm\u0103tor: <noindex><a rel=\"nofollow\" href=\"https:\/\/testmace.com\/roadmap\/\">https:\/\/testmace.com\/roadmap<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Feedback-ul dumneavoastr\u0103 ne va ajuta s\u0103 ne orient\u0103m mai bine \u00een abunden\u021ba de func\u021bii, iar sprijinul dumneavoastr\u0103 ne ofer\u0103 for\u021b\u0103 \u0219i \u00eencredere c\u0103 facem ceea ce trebuie. A\u0219a s-a \u00eent\u00e2mplat c\u0103 ast\u0103zi este o zi important\u0103 pentru proiectul nostru \u2014 ziua public\u0103rii TestMace pe <noindex><a rel=\"nofollow\" href=\"https:\/\/www.producthunt.com\/posts\/testmace\">ProductHunt<\/a><\/noindex>. V\u0103 rug\u0103m s\u0103 sprijini\u021bi proiectul nostru, este foarte important pentru noi. Mai ales c\u0103 pe pagina noastr\u0103 de PH exist\u0103 o ofert\u0103 tentant\u0103 ast\u0103zi, \u0219i este limitat\u0103<\/p>\n<p>Sursa: <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.2.1 - 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\/ro\/blog\/news\/chem-testmace-luchshe-postman\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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\udd47Ce face TestMace mai bun dec\u00e2t Postman | ProHoster","description":"Salut tuturor, sunt aici","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/chem-testmace-luchshe-postman","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/54188","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=54188"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/54188\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=54188"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=54188"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=54188"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}