TestMace. Mabilis na pagsisimula

TestMace. Mabilis na pagsisimula

Kamusta kayong lahat. Kami ay dahan-dahang umuusbong mula sa mga anino at nagpapatuloy sa serye ng mga artikulo tungkol sa aming produkto. Pagkatapos nauna review na artikulo, nakatanggap kami ng maraming feedback (karamihan ay positibo), mga mungkahi at ulat ng bug. Ngayon ay ipapakita namin TestMace sa aksyon at magagawa mong pahalagahan ang ilan sa mga tampok ng aming application. Para sa mas kumpletong pagsasawsaw, ipinapayo ko sa iyo na sumangguni sa aming dokumentasyon sa http://docs-ru.testmace.com. Kaya, tayo na!

Instalasyon

Magsimula tayo sa pagiging banal. Ang application ay magagamit at aktwal na nasubok sa tatlong platform - Linux, Windows, MacOS. Maaari mong i-download ang installer para sa OS kung saan ka interesado aming website. Para sa mga gumagamit ng Linux, posibleng mag-install snap package. Talagang inaasahan namin na ang Microsoft Store at ang App Store ay malapit nang makarating dito (Kailangan ba ito? Ano sa palagay mo?).

Pang-eksperimentong senaryo

Pinili namin ang sumusunod na karaniwang senaryo bilang aming paksa sa pagsubok:

  • Mag-login: user - admin, password - password
  • magdagdag ng bagong entry
  • Suriin natin kung naidagdag nang tama ang record

Susubukan namin https://testmace-quick-start.herokuapp.com/. Ito ay normal json-server, perpekto para sa pagsubok ng mga naturang application. Nagdagdag lang kami ng awtorisasyon sa pamamagitan ng token sa lahat ng ruta ng json-server at gumawa ng paraan ng pag-log in para matanggap ang token na ito. Kami ay unti-unting gumagalaw, unti-unting pagpapabuti ng aming proyekto.

Paglikha ng isang proyekto at sinusubukang lumikha ng isang entity nang walang pahintulot

Una, gumawa tayo ng bagong proyekto (talaksan->Bagong proyekto). Kung ilulunsad mo ang application sa unang pagkakataon, awtomatikong magbubukas ang isang bagong proyekto. Una, subukan nating gumawa ng isang kahilingan upang lumikha ng isang bagong tala (kung sakaling ang paglikha ng mga tala ay magagamit nang walang pahintulot). Pumili ng mga item mula sa menu ng konteksto ng Project node Magdagdag ng node -> RequestStep. Itakda ang pangalan ng node sa lumikha-post. Bilang resulta, gagawa ng bagong node sa puno at magbubukas ang tab para sa node na ito. Itakda natin ang mga sumusunod na parameter ng kahilingan:

TestMace. Mabilis na pagsisimula

Gayunpaman, kung susubukan naming tuparin ang kahilingan, magbabalik ang server ng 401 code at walang pahintulot na wala kaming makukuha sa server na ito. Well, sa pangkalahatan, tulad ng inaasahan).

Pagdaragdag ng kahilingan sa pahintulot

Gaya ng nasabi na, mayroon tayong POST endpoint /login, na kumukuha ng json bilang isang request body ng form: {"username": "<username>", "password": "<password>"}Saan username ΠΈ password (muli, mula sa panimulang talata sa itaas) ay may mga kahulugan admin ΠΈ password ayon sa pagkakabanggit. Bilang tugon, ang endpoint na ito ay nagbabalik ng json like {"token": "<token>"}. Gagamitin namin ito para sa awtorisasyon. Lumikha tayo RequestStep node na may pangalan login, ay gaganap bilang isang ninuno proyekto node Gamit ang drag-and-drop, ilipat ang isang ibinigay na node sa tree na mas mataas kaysa sa node lumikha-post. Itakda natin ang mga sumusunod na parameter sa bagong likhang kahilingan:

Isagawa natin ang kahilingan at tanggapin ang dalawang daang code na may token sa tugon. Isang bagay na tulad nito:

TestMace. Mabilis na pagsisimula

Refactoring: pag-aalis ng pagdoble ng domain

Sa ngayon ang mga kahilingan ay hindi naka-link sa iisang script. Ngunit hindi lamang ito ang sagabal. Kung titingnan mong mabuti, mapapansin mong hindi bababa sa nadoble ang domain sa parehong mga kahilingan. Hindi maganda. Oras na para i-refactor ang bahaging ito ng script sa hinaharap, at makakatulong ang mga variable dito.

Sa unang pagtatantya, ang mga variable ay nagsisilbi sa parehong papel tulad ng sa iba pang katulad na mga tool at programming language - inaalis ang pagdoble, pagtaas ng pagiging madaling mabasa, atbp. Maaari kang magbasa nang higit pa tungkol sa mga variable sa aming dokumentasyon. Sa kasong ito, kakailanganin namin ng mga variable ng user.

Tukuyin natin ang isang variable sa antas ng Project node domain may kahulugan https://testmace-quick-start.herokuapp.com. Para dito kinakailangan

  • Buksan ang tab gamit ang node na ito at mag-click sa icon ng calculator sa kanang tuktok
  • Mag-click sa + MAGDAGDAG NG VARIABLE
  • Ipasok ang variable na pangalan at halaga
    Sa aming kaso, ang dialog na may idinagdag na variable ay magiging ganito:

TestMace. Mabilis na pagsisimula

OK. Ngayon, dahil sa pamana, maaari naming gamitin ang variable na ito sa mga inapo ng anumang antas ng nesting. Sa aming kaso ang mga ito ay mga node login ΠΈ lumikha-post. Upang gumamit ng variable sa isang text field, kailangan mong magsulat ${<variable_name>}. Halimbawa, ang login url ay na-convert sa ${domain}/login, ayon sa pagkakabanggit para sa lumikha-post magiging hitsura ng node url ${domain}/posts.

Kaya, ginagabayan ng prinsipyo ng DRY, bahagyang napabuti namin ang senaryo.

I-save ang token sa isang variable

Dahil pinag-uusapan natin ang tungkol sa mga variable, palawakin natin nang kaunti ang paksang ito. Sa ngayon, sa kaso ng matagumpay na pag-log in, natatanggap namin mula sa server ang isang authorization token, na kakailanganin namin sa mga susunod na kahilingan. I-save natin ang token na ito sa isang variable. kasi ang halaga ng variable ay matutukoy sa panahon ng pagpapatupad ng script, gumagamit kami ng isang espesyal na mekanismo para dito - mga dynamic na variable.

Una, magsagawa tayo ng kahilingan sa pag-login. Sa tab Na-parse sagot, ilipat ang cursor sa ibabaw ng token at sa menu ng konteksto (na tinatawag na alinman sa kanang pindutan ng mouse o sa pamamagitan ng pag-click sa pindutan ...) piliin ang item Italaga sa variable. Lilitaw ang isang dialog na may mga sumusunod na field:

  • Landas β€” kung aling bahagi ng sagot ang kinuha (sa aming kaso ito ay body.token)
  • Kasalukuyang halaga β€” anong halaga ang nasa Path (sa aming kaso ito ang halaga ng token)
  • Variable na pangalan β€” pangalan ng variable kung saan Kasalukuyang halaga ay mapangalagaan. Sa aming kaso ito ay magiging token
  • Node β€” kung saan sa mga ninuno ay malilikha ang variable Variable na pangalan. Piliin natin ang Project

Ang nakumpletong dialog ay ganito ang hitsura:

TestMace. Mabilis na pagsisimula

Ngayon sa bawat oras na ang node ay naisakatuparan login dynamic na variable token ia-update gamit ang bagong halaga mula sa tugon. At ang variable na ito ay maiimbak sa proyekto node at, salamat sa mana, ay magiging available sa mga inapo.

Upang ma-access ang mga dynamic na variable, dapat mong gamitin built-in na variable $dynamicVar. Halimbawa, upang ma-access ang isang nakaimbak na token, kailangan mong tumawag ${$dynamicVar.token}.

Ipinapasa namin ang token ng pahintulot sa mga kahilingan

Sa mga nakaraang hakbang, natanggap namin ang authorization token at ang kailangan lang naming gawin ay magdagdag ng header Authorization may kahulugan Bearer <tokenValue> sa lahat ng kahilingang nangangailangan ng pahintulot, kasama ang lumikha-post. Mayroong ilang mga paraan upang gawin ito:

  1. Manu-manong kopyahin ang token at magdagdag ng header ng pahintulot sa mga kahilingan ng interes. Gumagana ang pamamaraan, ngunit ang paggamit nito ay limitado lamang sa mga kahilingan ng "ginawa at itinapon" na uri. Hindi angkop para sa paulit-ulit na pagpapatupad ng mga script
  2. Gamitin ang functionality awtorisasyon.
  3. Gumamit mga default na header

Ang paggamit ng pangalawang paraan ay tila halata, ngunit sa konteksto ng artikulong ito, ang pamamaraang ito ay... hindi kawili-wili. Well, talaga: ang mekanismo ng awtorisasyon plus minus ay pamilyar sa iyo mula sa iba pang mga tool (kahit na mayroon kaming mga bagay tulad ng pamana ng awtorisasyon) at malamang na hindi magtaas ng mga tanong.

Ang isa pang bagay ay ang mga default na header! Sa madaling sabi, ang mga default na header ay minana ng mga header ng HTTP na idinagdag sa kahilingan bilang default maliban kung tahasang hindi pinagana. Gamit ang functionality na ito, maaari mong, halimbawa, ipatupad ang custom na awtorisasyon o alisin lang ang pagdoble sa mga script. Gamitin natin ang feature na ito para magpasa ng token sa mga header.

Dati, maingat naming na-save ang token sa isang dynamic na variable $dynamicVar.token sa antas ng Project node. Ang natitira na lang ay gawin ang sumusunod:

  1. Tukuyin ang default na pamagat Authorization may kahulugan Bearer ${$dynamicVar.token} sa antas ng Project node. Upang gawin ito, sa interface ng Project ng node kailangan mong magbukas ng dialog na may mga default na heading (button Header sa kanang sulok sa itaas) at magdagdag ng kaukulang pamagat. Ang dialog na may mga punong halaga ay magiging ganito:
    TestMace. Mabilis na pagsisimula
  2. Huwag paganahin ang header na ito mula sa kahilingan sa pag-login. Naiintindihan ito: sa oras ng pag-login, wala pa kaming token at ii-install namin ito sa kahilingang ito. Samakatuwid, sa login interface ng kahilingan sa tab Header sa lugar ng Pamana alisan ng check ang Authorization header.

Iyon lang. Ngayon ang header ng pahintulot ay idaragdag sa lahat ng mga kahilingan na mga anak ng Project node, maliban sa login node. Lumalabas na sa yugtong ito ay mayroon na tayong script na nakahanda at ang kailangan lang nating gawin ay ilunsad ito. Maaari mong patakbuhin ang script sa pamamagitan ng pagpili Tumakbo sa menu ng konteksto ng Project node.

Sinusuri ang kawastuhan ng paggawa ng post

Sa yugtong ito, ang aming script ay maaaring mag-log in at, gamit ang isang authorization token, lumikha ng isang post. Gayunpaman, kailangan nating tiyakin na ang bagong likhang post ay may tamang pangalan. Iyon ay, sa esensya, ang natitira na lang ay gawin ang sumusunod:

  • Magpadala ng kahilingan para makatanggap ng post sa pamamagitan ng id,
  • Suriin kung ang pangalan na natanggap mula sa server ay tumutugma sa pangalan na ipinadala kapag lumilikha ng post

Tingnan natin ang unang hakbang. Dahil ang halaga ng id ay tinutukoy sa panahon ng pagpapatupad ng script, kailangan mong lumikha ng isang dynamic na variable (tawagin natin ito postId) mula sa node lumikha-post sa antas ng Project node. Alam na natin kung paano gawin ito, sumangguni lamang sa seksyon I-save ang token sa isang variable. Ang natitira na lang ay gumawa ng kahilingan para makatanggap ng post gamit ang id na ito. Para magawa ito, gumawa tayo ng RequestStep get-post na may mga sumusunod na parameter:

  • Uri ng kahilingan: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Upang maipatupad ang ikalawang hakbang, kailangan nating makilala badya buhol. Ang Assertion node ay isang node na nagbibigay-daan sa iyong magsulat ng mga tseke para sa mga partikular na kahilingan. Ang bawat Assertion node ay maaaring maglaman ng ilang assertion (mga tseke). Maaari kang magbasa nang higit pa tungkol sa lahat ng uri ng mga pahayag mula sa aming dokumentasyon. Gagamitin natin Compare paninindigan sa operator equal. Mayroong ilang mga paraan upang lumikha ng mga pahayag:

  1. Mahaba. Manu-manong gumawa ng Assertion node mula sa context menu ng RequestStep node. Sa Assertion node na ginawa, idagdag ang assertion of interest at punan ang mga field.
  2. Mabilis. Gumawa ng Assertion node kasama ang isang assertion mula sa RequestStep node na tugon gamit ang context menu

Gamitin natin ang pangalawang paraan. Ito ang magiging hitsura nito para sa aming kaso.

TestMace. Mabilis na pagsisimula

Para sa mga hindi nakakaintindi, narito ang nangyayari:

  1. Gumawa ng isang kahilingan sa node get-post
  2. Sa tab Na-parse sagot, tawagan ang menu ng konteksto at piliin Lumikha ng paninindigan -> Ihambing -> pantay

Binabati kita, nagawa namin ang aming unang pagsubok! Simple, hindi ba? Ngayon ay maaari mong ganap na patakbuhin ang script at tamasahin ang resulta. Ang natitira na lang ay i-refactor ito ng kaunti at ilabas title sa isang hiwalay na variable. Ngunit iiwan namin ito para sa iyo bilang araling-bahay)

Konklusyon

Sa gabay na ito, gumawa kami ng ganap na senaryo at kasabay nito ay sinuri ang ilan sa mga feature ng aming produkto. Siyempre, hindi namin ginamit ang lahat ng pag-andar at sa mga sumusunod na artikulo ay magbibigay kami ng detalyadong pangkalahatang-ideya ng mga kakayahan ng TestMace. Manatiling nakatutok!

PS Para sa mga masyadong tamad na kopyahin ang lahat ng mga hakbang, mabait kaming nagtala imbakan kasama ang proyekto mula sa artikulo. Maaari mo itong buksan gamit ang talaksan -> Buksan ang proyekto at piliin ang Project folder.

Pinagmulan: www.habr.com

Magdagdag ng komento