TestMace. Destpêka bilez

TestMace. Destpêka bilez

Silav hemû. Em hêdî hêdî ji bin siyê derdikevin û rêze nivîsên derbarê berhema xwe de didomînin. Piştî pêşî gotara nirxandinê, me gelek bertek (bi piranî erênî), pêşniyar û raporên xeletiyê wergirtin. Îro em ê nîşan bidin TestMace di çalakiyê de û hûn ê bikaribin hin taybetmendiyên serîlêdana me binirxînin. Ji bo binavbûnek bêkêmasî, ez ji we re şîret dikim ku hûn serî li belgeyên me bidin http://docs-ru.testmace.com. Ji ber vê yekê, em herin!

mîhengê

Ka em bi banalîteyê dest pê bikin. Serlêdan heye û bi rastî li ser sê platforman tê ceribandin - Linux, Windows, MacOS. Hûn dikarin sazkerê ji bo OS-ya ku hûn jê re eleqedar in dakêşin malpera me. Ji bo bikarhênerên Linux-ê sazkirinê gengaz e pakêta snap. Em bi rastî hêvî dikin ku Microsoft Store û App Store dê di demek nêzîk de bigihîjin wê (Gelo pêdivî ye? Hûn çi difikirin?).

Senaryoya Ezmûnî

Me senaryoya standard a jêrîn wekî mijara ceribandina xwe hilbijart:

  • Têketin: bikarhêner - rêveber, şîfre - şîfre
  • têketineke nû lê zêde bike
  • Ka em kontrol bikin ka tomar rast hatî zêdekirin

Em ê ceribandinê bikin https://testmace-quick-start.herokuapp.com/. Ev normal e json-server, ji bo ceribandina serîlêdanên weha bêkêmasî ye. Me tenê destûrname bi nîşanek li hemî rêçikên json-server zêde kir û ji bo wergirtina vê tokenê rêbazek têketinê çêkir. Em ê bi pêş ve biçin, gav bi gav projeya xwe baştir bikin.

Afirandina projeyekê û hewldana afirandina saziyek bê destûr

Pêşîn, em projeyek nû ava bikin (Wêne->Projeya nû). Heke hûn ji bo cara yekem serîlêdanê didin destpêkirin, projeyek nû dê bixweber vebe. Pêşî, em hewl bidin ku daxwazek ji bo afirandina tomarek nû bikin (di rewşek ku çêkirina tomaran bêyî destûr peyda dibe). Tiştên ji pêşeka çarçovê ya girêka Projeyê hilbijêrin Girêk zêde bikin -> RequestStep. Navê girêkê saz bikin afirandin-post. Wekî encamek, girêkek nû dê di darê de were afirandin û tabloyek ji bo vê nodê dê vebe. Ka em pîvanên daxwaznameyê yên jêrîn bicîh bikin:

TestMace. Destpêka bilez

Lêbelê, heke em hewl bidin ku daxwazê ​​bicîh bînin, server dê kodek 401 vegerîne û bêyî destûr em ê li ser vê serverê tiştek negirin. Welê, bi gelemperî, wekî ku tê hêvî kirin).

Zêdekirina daxwaznameyek destûrnameyê

Wekî ku berê jî got, me xalek dawiya POST heye /login, ku json wekî laşek daxwazê ​​ya formê digire: {"username": "<username>", "password": "<password>"}ko username и password (dîsa, ji paragrafa destpêkê ya li jor) wateyên wan hene admin и password herwiha. Di bersivê de, ev xala dawî json mîna vedigere {"token": "<token>"}. Em ê ji bo destûrnameyê bikar bînin. Werin em biafirînin RequestStep girêka bi nav login, dê wekî bav û kalan tevbigere Rêvename node Bi karanîna kaş-û-davêjê, girêkek diyarkirî di darê de ji girêkê bilindtir bigerînin afirandin-post. Werin em parametreyên jêrîn li ser daxwaziya nû hatî afirandin saz bikin:

Ka em daxwazê ​​bicîh bînin û koda du sedemîn bi nîşana bersivê bistînin. Tiştek weha:

TestMace. Destpêka bilez

Refactoring: rakirina dubarekirina domainê

Heya nuha daxwaz bi yek senaryoyê ve nayên girêdan. Lê ev ne tenê kêmasiyek e. Ger hûn ji nêz ve lê mêze bikin, hûn ê bibînin ku bi kêmanî domain di her du daxwazan de dubare ye. Ne baş e. Wext e ku em vê beşê skrîpta pêşerojê ji nû ve bikin, û guhêrbar dê di vê yekê de ji me re bibin alîkar.

Bi nêzîkbûnek yekem, guhêrbar heman rola wekî di amûrên din û zimanên bernamesaziyê yên mîna hev de kar dikin - rakirina dubarebûnê, zêdekirina xwendinê, hwd. Hûn dikarin li ser guherbaran bêtir bixwînin belgeyên me. Di vê rewşê de, em ê hewceyê guhêrbarên bikarhêner in.

Ka em di asta girêka Projeyê de guhêrbarek diyar bikin domain bi wate https://testmace-quick-start.herokuapp.com. Ji bo vê pêwîst e

  • Bi vê nodê re tabloyê vekin û li îkona hesabkerê li jorê rastê bikirtînin
  • Kılik lı ser + LÊZÊKIRIN
  • Nav û nirxa guherbarê binivîse
    Di rewşa me de, diyaloga bi guherbara zêdekirî dê bi vî rengî xuya bike:

TestMace. Destpêka bilez

OK. Naha, ji ber mîrasbûnê, em dikarin vê guhêrbar di neviyên her astek hêlînê de bikar bînin. Di rewşa me de ev girêk in login и afirandin-post. Ji bo ku hûn di qada nivîsê de guherbarek bikar bînin, divê hûn binivîsin ${<variable_name>}. Mînakî, url têketinê tê veguheztin ${domain}/login, bi rêzdarî ji bo afirandin-post url-ya nodê dê mîna xuya bike ${domain}/posts.

Bi vî rengî, bi rêveçûna prensîba DRY, me senaryo hinekî çêtir kiriye.

Tokenê li guhêrbarek tomar bike

Ji ber ku em behsa guherbaran dikin, bila em hinekî li ser vê mijarê berfireh bikin. Heya nuha, di bûyera têketina serketî de, em ji serverê nîşanek destûrnameyê distînin, ku em ê di daxwazên paşîn de hewce bikin. Ka em vê tokenê di guhêrbarekê de hilînin. Bo nirxa guhêrbar dê di dema darvekirina nivîsê de were destnîşankirin, em ji bo vê yekê mekanîzmayek taybetî bikar tînin - guherbarên dînamîk.

Pêşîn, bila em daxwazek têketinê pêk bînin. Di tabê de Parçe kirin bersivê bide, nîşankerê li ser tokenê bikişîne û di pêşeka çarçoveyê de (ku bi bişkoka rastê ya mişkê tê gotin an jî bi tikandina bişkojkê ve tê gotin ...) tiştê hilbijêrin Ji guhêrbar re veqetandin. Dê diyalogek bi qadên jêrîn xuya bibe:

  • Şop - kîjan beşa bersivê tê girtin (di rewşa me de ew e body.token)
  • Nirxa niha - çi nirx di rê de ye (di rewşa me de ev nirxa nîşan e)
  • Navê variant - navê guhêrbar ku Nirxa niha dê bên parastin. Di rewşa me de wê bibe token
  • Node - di kîjan ji bav û kalan de guherbar dê çêbibe Navê variant. Ka em Projeyê hilbijêrin

Diyaloga qedandî wiha xuya dike:

TestMace. Destpêka bilez

Niha her cara ku node tê darvekirin login variable dînamîk token dê bi nirxa nû ya ji bersivê re were nûve kirin. Û ev guherbar dê tê de were hilanîn Rêvename girêk û bi saya mîratê, dê ji dûndanan re peyda bibe.

Ji bo gihîştina guhêrbarên dînamîkî, divê hûn bikar bînin guherbar avakirî $dynamicVar. Mînakî, ji bo gihîştina tokenek hilanîn, hûn hewce ne ku bang bikin ${$dynamicVar.token}.

Em nîşana destûrnameyê di nav daxwazan de derbas dikin

Di gavên berê de me tokena destûrnameyê wergirt û ya ku divê em bikin ev e ku sernavek lê zêde bikin Authorization bi wate Bearer <tokenValue> di hemî daxwazên ku destûrnameyê hewce dike, di nav de afirandin-post. Gelek awayên ku vê yekê bikin hene:

  1. Tokenê bi destan kopî bikin û sernavek destûrnameyê li daxwazên berjewendiyê zêde bikin. Rêbaz dixebite, lê karanîna wê tenê bi daxwazên celebê "çêkirî û avêtin" ve sînorkirî ye. Ji bo cîbicîkirina dubare ya senaryoyan ne guncaw e
  2. Karbidestiyê bikar bînin wekîlkirinî.
  3. Bikar bînin sernivîsên xwerû

Bikaranîna rêbaza duyemîn eşkere xuya dike, lê di çarçoveya vê gotarê de, ev nêzîkbûn ... ne balkêş e. Welê, bi rastî: mekanîzmaya destûrnameyê plus minus ji amûrên din re ji we re nas e (tevî ku tiştên me hebin mîrata destûr) û ne mimkûn e ku pirsan bike.

Tiştek din sernavên xwerû ye! Bi kurtasî, sernavên xwerû sernavên HTTP-ê yên mîras in ku ji hêla xwerû ve li daxwazê ​​têne zêde kirin heya ku bi eşkere neçalak bibin. Bi karanîna vê fonksiyonê, hûn dikarin, mînakî, destûrnameya xwerû bicîh bikin an jî bi tenê ji dubarekirina nivîsan xilas bibin. Ka em vê taybetmendiyê bikar bînin da ku nîşanek di serî de derbas bikin.

Berê, me bi hişyarî token li guhêrbarek dînamîkî xilas kir $dynamicVar.token di asta girêka Projeyê de. Tiştê ku dimîne ev e ku hûn jêrîn bikin:

  1. Sernavê xwerû diyar bike Authorization bi wate Bearer ${$dynamicVar.token} di asta girêka Projeyê de. Ji bo vê yekê, di navrûya Projeyê ya nodê de hûn hewce ne ku diyalogek bi sernavên xwerû vekin (bişkok Headers li quncika jorîn a rastê) û sernavek têkildar lê zêde bikin. Diyaloga bi nirxên dagirtî re dê wiha xuya bike:
    TestMace. Destpêka bilez
  2. Vê sernivîsê ji daxwaza têketinê neçalak bike. Ev tê fêm kirin: di dema têketinê de, hîna me tokenek tune û em ê bi vê daxwazê ​​saz bikin. Ji ber vê yekê, di navgîniya têketinê ya daxwazê ​​de di tabê de Headers li herêmê ya Mîrat kirin sernavê Desthilatdariyê rakin.

Navê pêger. Naha sernivîsa destûrnameyê dê li hemî daxwazên ku zarokên girêka Projeyê ne, ji bilî girêka têketinê were zêdekirin. Derket holê ku di vê qonaxê de jixwe senaryoyek me amade ye û ya ku divê em bikin ev e ku em wê bidin destpêkirin. Hûn dikarin bi bijartinê skrîptê bimeşînin Rev di menuya çarçovê ya girêka Projeyê de.

Kontrolkirina rastdariya çêkirina postê

Di vê qonaxê de, skrîpta me dikare têkeve û, bi karanîna tokenek destûrnameyê, postek biafirîne. Lêbelê, pêdivî ye ku em pê ewle bin ku posta nû hatî afirandin navê rast heye. Ango, di eslê xwe de, ya ku dimîne ev e ku meriv jêrîn bike:

  • Daxwazek ji bo wergirtina postek bi nasnameyê bişînin,
  • Kontrol bikin ku navê ku ji serverê hatî wergirtin bi navê ku dema afirandina postê hatî şandin li hev dike

Ka em li gava yekem binêrin. Ji ber ku nirxa id di dema darvekirina skrîptê de tê destnîşankirin, hûn hewce ne ku guhêrbarek dînamîkî biafirînin (ka em jê re bibêjin postId) ji girêk afirandin-post di asta girêka Projeyê de. Em jixwe dizanin ku meriv vê yekê çawa bike, tenê li beşê binihêrin Tokenê li guhêrbarek tomar bike. Tiştê ku dimîne ev e ku meriv bi karanîna vê id-ê daxwazek ji bo wergirtina postek biafirîne. Ji bo vê yekê, bila em RequestStep biafirînin get-post bi pîvanên jêrîn:

  • Cureya daxwazê: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Ji bo pêkanîna pêngava duyemîn, divê em bi hev re nas bikin Îddîa girêkkirin. Nodek Assertion girêkek e ku dihêle hûn ji bo daxwazên taybetî kontrolan binivîsin. Her girêkek Daxuyaniyê dikare çend îddîayan (kontrol) pêk bîne. Hûn dikarin li ser hemî cûreyên îddîayan ji me bêtir bixwînin belgekirin. Em ê bikar bînin Compare îdîaya bi operator equal. Gelek awayên afirandina îdiayan hene:

  1. Dirêj. Ji pêşeka kontekstê ya girêka RequestStep bi destan girêkek Dadkirinê biafirînin. Di girêka Daxuyaniyê de hatî afirandin, îdiaya berjewendiyê lê zêde bike û qadan tije bike.
  2. Zû. Bi karanîna menuya çarçoveyê re, digel îddîayek ji bersiva nodê RequestStep, girêkek Dadkirinê biafirînin

Ka em rêbaza duyemîn bikar bînin. Ji bo doza me ev ê çawa xuya bike.

TestMace. Destpêka bilez

Ji bo kesên ku fêm nakin, li vir çi diqewime:

  1. Daxwazek di nodê de bikin get-post
  2. Di tabê de Parçe kirin bersiv bikin, bang li menuya kontekstê bikin û hilbijêrin Daxuyaniyê çêbikin -> Mûqayesekirin -> Wekhev

Pîroz be, me ceribandina xwe ya yekem çêkir! Hêsan, ne wisa? Naha hûn dikarin skrîptê bi tevahî bimeşînin û ji encamê kêfxweş bibin. Tiştê ku dimîne ev e ku meriv wê hinekî ji nû ve çêbike û jê derxe title nav guherbareke cuda. Lê em ê vê yekê ji we re wekî karê malê bihêlin)

encamê

Di vê rêbernameyê de, me senaryoyek bêkêmasî afirand û di heman demê de hin taybetmendiyên hilberê xwe nirxand. Bê guman, me hemî fonksîyon bikar neanî û di gotarên jêrîn de em ê li ser kapasîteyên TestMace hûrguliyek berfireh peyda bikin. Li bendê bin!

P.S. Ji bo kesên ku ji nûvekirina hemî gavan pir tembel in, me bi dilovanî tomar kiriye depo bi projeya ji gotara. Hûn dikarin wê bi vekin Wêne -> Projeya vekirî û peldanka Projeyê hilbijêrin.

Source: www.habr.com

Add a comment