TestMace. Partenza rapida

TestMace. Partenza rapida

Salute à tutti. Emergemu lentamente da l'ombra è cuntinuemu a seria d'articuli nantu à u nostru pruduttu. Dopu precedente articulu di rivista, avemu ricevutu assai feedback (principalmente pusitivi), suggerimenti è rapporti di bug. Oghje vi mustraremu TestMace in azzione è puderete apprezzà alcune di e caratteristiche di a nostra applicazione. Per una immersione più cumpleta, vi cunsigliu di riferite à a nostra ducumentazione à http://docs-ru.testmace.com. Allora, andemu !

rimarchevuli

Cuminciamu cù a banalità. L'applicazione hè dispunibule è in realtà pruvata nantu à trè piattaforme - Linux, Windows, MacOS. Pudete scaricà u installatore per u SO chì site interessatu da u nostru situ web. Per l'utilizatori di Linux hè pussibule installà pacchettu snap. Speremu daveru chì u Microsoft Store è l'App Store ghjunghjenu prestu (Hè necessariu? Chì ne pensate?).

Scenariu sperimentale

Avemu sceltu u seguente scenariu standard cum'è u nostru sughjettu di prova:

  • Login: utilizatore - amministratore, password - password
  • aghjunghje una nova entrata
  • Cuntrollamu chì u record hè statu aghjuntu bè

Avemu da pruvà https://testmace-quick-start.herokuapp.com/. Questu hè normale json-server, perfettu per pruvà tali applicazioni. Avemu appena aghjustatu l'autorizazione per token à tutte e rotte json-server è creatu un metudu di login per riceve stu token. Ci muviaremu progressivamente, migliurannu pocu à pocu u nostru prughjettu.

Crià un prughjettu è pruvà à creà una entità senza autorizazione

Prima, criemu un novu prughjettu (File->Prughjettu novu). Sè vo lanciate l'applicazione per a prima volta, un novu prughjettu si apre automaticamente. Prima, pruvemu di fà una dumanda per creà un novu record (in casu chì a creazione di registri hè dispunibule senza auturizazione). Selezziunate l'articuli da u menù di cuntestu di u nodu di Prughjettu Aghjunghjite node -> Request Step. Pone u nome di u nodu à creà-post. In u risultatu, un novu node serà creatu in l'arburu è una tabulazione per questu node si apre. Fighjemu i seguenti parametri di dumanda:

TestMace. Partenza rapida

In ogni casu, se pruvemu à cumpiendu a dumanda, u servitore rinviarà un codice 401 è senza l'autorizazione ùn averemu nunda in questu servitore. Ebbè, in generale, cum'è previstu).

Aghjunghjendu una dumanda d'autorizazione

Comu digià dettu, avemu un endpoint POST /login, chì piglia json cum'è un corpu di dumanda di a forma: {"username": "<username>", "password": "<password>"}induve username и password (di novu, da u paràgrafu introduttivu sopra) anu significatu admin и password rispettivamente. In risposta, questu endpoint torna json like {"token": "<token>"}. Avemu aduprà per l'autorizazione. Creemu Request Step node cù nome purtellu, agirà cum'è un antenatu Project nodu Utilizendu drag-and-drop, move un nodu datu in l'arbulu più altu ch'è u node creà-post. Fighjemu i seguenti parametri à a nova dumanda creata:

Eseguimu a dumanda è riceve u dui centu di codice cù u token in a risposta. Qualcosa cum'è questu:

TestMace. Partenza rapida

Refactoring: caccià a duplicazione di u duminiu

Finu a ora, e dumande ùn sò micca ligati in una sola scrittura. Ma questu hè micca u solu inconveniente. Sè vo circate attentamente, vi vede chì almenu u duminiu hè duplicatu in e duie dumande. Micca bè. Hè u tempu di refactor sta parte di u futuru script, è e variàbili ci aiuteranu cun questu.

À una prima approssimazione, i variàbili servenu u listessu rolu cum'è in altri strumenti simili è linguaggi di prugrammazione - eliminendu a duplicazione, aumentendu a leggibilità, etc. Pudete leghje più nantu à e variabili in a nostra documentazione. In questu casu, avemu bisognu di variabili d'utilizatori.

Definimu una variabile à u livellu di u nodu di Prughjettu domain cun significatu https://testmace-quick-start.herokuapp.com. Per questu hè necessariu

  • Aprite a tabulazione cù questu node è cliccate nantu à l'icona di a calculatrice in cima à diritta
  • Cliccate nant'à + ADD VARIABILE
  • Inserite u nome di variabile è u valore
    In u nostru casu, u dialogu cù a variabile aghjunta serà cusì:

TestMace. Partenza rapida

OK. Avà, per via di l'eredità, pudemu usà sta variabile in discendenti di ogni livellu di nidificazione. In u nostru casu, questi sò nodi purtellu и creà-post. Per utilizà una variabile in un campu di testu, avete bisognu di scrive ${<variable_name>}. Per esempiu, l'url di login hè cunvertitu in ${domain}/login, rispettivamente per creà-post l'url di u nodu parerà ${domain}/posts.

Cusì, guidati da u principiu DRY, avemu ligeramente migliuratu u scenariu.

Salvà u token in una variabile

Siccomu parlemu di variàbili, espansione un pocu di stu tema. À u mumentu, in casu di login successu, ricevemu da u servitore un token d'autorizazione, chì avemu bisognu in e richieste sussegwente. Salvemu stu token in una variabile. Perchè u valore di a variàbile serà determinatu durante l'esekzione di script, usemu un mecanismu speciale per questu - variabili dinamichi.

Prima, facemu una dumanda di login. In a tabulazione Analizatu risponde, move u cursore nantu à u token è in u menù di cuntestu (chì hè chjamatu sia cù u buttone drittu di u mouse o clicchendu nantu à u buttone ...) selezziunate l'elementu Assignà à a variabile. Un dialogu apparirà cù i seguenti campi:

  • Caminu - quale parte di a risposta hè presa (in u nostru casu hè body.token)
  • Valore attuale - chì valore si trova longu u Path (in u nostru casu hè u valore simbolicu)
  • Nome di variabile - nome di a variàbile induve Valore attuale serà cunservatu. In u nostru casu serà token
  • Nodu - in quale di l'antenati a variabile serà creata Nome di variabile. Selezziunà Prughjettu

U dialogu cumpletu s'assumiglia cusì:

TestMace. Partenza rapida

Avà ogni volta chì u node hè eseguitu purtellu variabile dinamica token serà aghjurnatu cù u novu valore da a risposta. È sta variabile serà almacenata in Project node è, grazia à l'eredità, serà dispunibule per i discendenti.

Per accede à variàbili dinamichi, duvete aduprà variabile integrata $dynamicVar. Per esempiu, per accede à un token almacenatu, avete bisognu di chjamà ${$dynamicVar.token}.

Passemu u token d'autorizazione in richieste

In i passi precedenti avemu ricevutu u token d'autorizazione è tuttu ciò chì avemu da fà hè aghjunghje un header Authorization cun significatu Bearer <tokenValue> in tutte e dumande chì necessitanu l'autorizazione, cumprese creà-post. Ci hè parechje manere di fà questu:

  1. Copia manualmente u token è aghjunghje un capu d'autorizazione à e dumande d'interessu. U metudu funziona, ma u so usu hè limitatu solu à e dumande di u tipu "fattu è ghjittatu". Ùn hè micca adattatu per l'esecuzione ripetuta di script
  2. Aduprà a funziunalità autorizazione.
  3. Aduprate intestazioni predefinite

Utilizà u sicondu metudu pare evidenti, ma in u cuntestu di questu articulu, questu approcciu hè ... senza interessu. Ebbè, veramente: u mecanismu d'autorizazione plus minus hè familiarizatu per voi da altri strumenti (ancu s'ellu avemu cose cum'è l'eredità d'autorizazione) è hè improbabile di suscitarà dumande.

Un'altra cosa hè l'intestazione predefinita! In poche parole, l'intestazione predeterminata sò intestazioni HTTP ereditati chì sò aghjuntu à a dumanda per difettu, salvu chì ùn sò esplicitamente disattivati. Utilizendu sta funziunalità, pudete, per esempiu, implementà l'autorizazione persunalizata o simpricimenti sguassate di duplicazione in scripts. Utilizemu sta funzione per passà un token in l'intestazione.

Prima, avemu salvatu prudentemente u token à una variabile dinamica $dynamicVar.token à u livellu di u nodu di Prughjettu. Il ne reste plus qu'à faire ce qui suit :

  1. Definite u titulu predeterminatu Authorization cun significatu Bearer ${$dynamicVar.token} à u livellu di u nodu di Prughjettu. Per fà questu, in l'interfaccia di u Prughjettu di u node avete bisognu di apre un dialogu cù intestazioni predeterminate (buttone lunati in u cantonu superiore dirittu) è aghjunghje un titulu currispundente. U dialogu cù i valori cumpleti sarà cusì:
    TestMace. Partenza rapida
  2. Disattivà stu header da a dumanda di login. Questu hè comprensibile: à u mumentu di u login, ùn avemu micca ancu un token è l'installeremu cù sta dumanda. Dunque, in l'interfaccia di login di a dumanda in a tabulazione lunati in a zona di Ereditatu desmarcate l'intestazione Autorizazione.

Eccu tuttu. Avà l'intestazione di l'autorizazione serà aghjuntu à tutte e dumande chì sò figlioli di u node di Prughjettu, eccettu per u node di login. Ci hè chì in questu stadiu avemu digià un script prontu è tuttu ciò chì avemu da fà hè di lancià. Pudete eseguisce u script da selezziunate Run in u menù di cuntestu di u node di Prughjettu.

Verificate a correttezza di a creazione di post

À questu stadiu, u nostru script pò accede è, utilizendu un token d'autorizazione, crea un postu. In ogni casu, avemu bisognu di assicurà chì u novu postu creatu hà u nome currettu. Hè, in essenza, tuttu ciò chì resta hè di fà ciò chì segue:

  • Mandate una dumanda per riceve un post per id,
  • Verificate chì u nome ricevutu da u servitore currisponde à u nome mandatu quandu crea u post

Fighjemu u primu passu. Siccomu u valore di l'id hè determinatu durante l'esekzione di u script, avete bisognu di creà una variabile dinamica (chjamemu postId) da u nodu creà-post à u livellu di u nodu di Prughjettu. Sapemu dighjà cumu fà questu, solu riferite à a sezione Salvà u token in una variabile. Tuttu ciò chì resta hè di creà una dumanda per riceve un postu cù questu id. Per fà questu, creemu un RequestStep get-post cù i seguenti parametri:

  • Tipu di dumanda: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Per implementà u sicondu passu, avemu bisognu di cunnosce Affirmazione nodu. Un node Assertion hè un node chì permette di scrive cuntrolli per richieste specifiche. Ogni node Assertion pò cuntene parechje asserzioni (verificazioni). Pudete leghje più nantu à tutti i tipi di affirmazioni da u nostru ducumentazione. Avemu aduprà Compare affirmazioni cù l'operatore equal. Ci hè parechje manere di creà asserzioni:

  1. Longu. Crea manualmente un node Assertion da u menù di cuntestu di u node RequestStep. In u node Assertion creatu, aghjunghje l'affirmazione di interessu è riempie i campi.
  2. Rapidu. Crea un nodu di Asserzione cù una asserzione da a risposta di u nodu RequestStep utilizendu u menù di cuntestu

Avemu aduprà u sicondu mètudu. Questu hè ciò chì parerà per u nostru casu.

TestMace. Partenza rapida

Per quelli chì ùn capiscenu micca, eccu ciò chì succede:

  1. Fate una dumanda in u node get-post
  2. In a tabulazione Analizatu risponde, chjamate u menù di cuntestu è selezziunate Crea l'affirmazione -> Compare -> paru

Felicitazioni, avemu creatu a nostra prima prova! Semplice, ùn hè micca? Avà pudete eseguisce u script cumpletamente è gode di u risultatu. Il ne reste plus qu'à refactoriser un peu et à retirer title in una variabile separata. Ma lasciaremu questu per voi cum'è travaglii di casa)

cunchiusioni

In questa guida, avemu creatu un scenariu cumpletu è à u stessu tempu rivisemu alcune di e caratteristiche di u nostru pruduttu. Di sicuru, ùn avemu micca utilizatu tutte e funziunalità è in l'articuli seguenti daremu una panoramica dettagliata di e capacità di TestMace. Restate à sente !

PS Per quelli chì sò troppu pigri per ripruduce tutti i passi, avemu amablemente arregistratu repository cù u prugettu da l'articulu. Pudete apre cù File -> Prughjettu apertu è sceglie u cartulare Project.

Source: www.habr.com

Add a comment