TestMace. Brzi početak

TestMace. Brzi početak

Bok svima. Polako izlazimo iz sjene i nastavljamo seriju tekstova o našem proizvodu. Nakon prijašnji preglednog članka, dobili smo puno povratnih informacija (uglavnom pozitivnih), prijedloga i izvješća o pogreškama. Danas ćemo pokazati TestMace na djelu i moći ćete cijeniti neke od značajki naše aplikacije. Za potpunije uranjanje, savjetujem vam da pogledate našu dokumentaciju na http://docs-ru.testmace.com. Pa, idemo!

Instalacija

Krenimo od banalnosti. Aplikacija je dostupna i zapravo testirana na tri platforme - Linux, Windows, MacOS. Možete preuzeti instalacijski program za OS koji vas zanima naše web stranice. Za korisnike Linuxa moguće je instalirati snap paket. Zaista se nadamo da će Microsoft Store i App Store uskoro doći do toga (Je li potrebno? Što mislite?).

Eksperimentalni scenarij

Kao predmet testiranja odabrali smo sljedeći standardni scenarij:

  • Prijava: korisnik - admin, lozinka - lozinka
  • dodajte novi unos
  • Provjerimo je li zapis ispravno dodan

Testirat ćemo dalje https://testmace-quick-start.herokuapp.com/. Ovo je normalno json-poslužitelj, savršeno za testiranje takvih aplikacija. Upravo smo dodali autorizaciju tokenom svim rutama json-poslužitelja i stvorili metodu prijave za primanje ovog tokena. Kretat ćemo se progresivno, postupno poboljšavajući naš projekt.

Stvaranje projekta i pokušaj stvaranja entiteta bez ovlaštenja

Prvo, napravimo novi projekt (file->Novi projekt). Ako aplikaciju pokrećete prvi put, automatski će se otvoriti novi projekt. Prvo, pokušajmo napraviti zahtjev za stvaranje novog zapisa (u slučaju da je stvaranje zapisa dostupno bez autorizacije). Odaberite stavke iz kontekstnog izbornika čvora projekta Dodaj čvor -> RequestStep. Postavite naziv čvora na stvoriti-post. Kao rezultat toga, u stablu će se stvoriti novi čvor i otvorit će se kartica za ovaj čvor. Postavimo sljedeće parametre zahtjeva:

TestMace. Brzi početak

Međutim, ako pokušamo ispuniti zahtjev, poslužitelj će vratiti kod 401 i bez autorizacije nećemo dobiti ništa na ovom poslužitelju. Pa, općenito, kao što se i očekivalo).

Dodavanje zahtjeva za autorizaciju

Kao što je već rečeno, imamo POST krajnju točku /login, koji uzima json kao tijelo zahtjeva u obliku: {"username": "<username>", "password": "<password>"}Gdje username и password (opet, iz uvodnog paragrafa gore) imaju značenja admin и password odnosno. Kao odgovor, ova krajnja točka vraća json like {"token": "<token>"}. Koristit ćemo ga za autorizaciju. Kreirajmo RequestStep čvor s imenom prijava, djelovat će kao predak Projekt čvor Koristeći povuci i ispusti, pomaknite dati čvor u stablu više od čvora stvoriti-post. Postavimo sljedeće parametre na novostvoreni zahtjev:

Izvršimo zahtjev i primimo dvjestoti kod s tokenom u odgovoru. Nešto kao ovo:

TestMace. Brzi početak

Refactoring: uklanjanje dupliciranja domene

Za sada zahtjevi nisu povezani u jednu skriptu. Ali to nije jedini nedostatak. Ako bolje pogledate, primijetit ćete da je barem domena duplicirana u oba zahtjeva. Nije dobro. Vrijeme je da refaktoriramo ovaj dio buduće skripte, a varijable će nam pomoći u tome.

U prvoj aproksimaciji, varijable imaju istu ulogu kao u drugim sličnim alatima i programskim jezicima - eliminiraju dupliciranje, povećavaju čitljivost, itd. Više o varijablama možete pročitati u našu dokumentaciju. U ovom slučaju trebat će nam korisničke varijable.

Definirajmo varijablu na razini čvora projekta domain s vrijednošću https://testmace-quick-start.herokuapp.com, Za to je potrebno

  • Otvorite karticu s ovim čvorom i kliknite na ikonu kalkulatora u gornjem desnom kutu
  • Kliknite na + DODAJ VARIJABLU
  • Unesite naziv i vrijednost varijable
    U našem slučaju, dijalog s dodanom varijablom izgledat će ovako:

TestMace. Brzi početak

U REDU. Sada, zbog nasljeđivanja, ovu varijablu možemo koristiti u potomcima bilo koje razine ugniježđenja. U našem slučaju to su čvorovi prijava и stvoriti-post. Kako biste koristili varijablu u tekstualnom polju, morate pisati ${<variable_name>}. Na primjer, url za prijavu pretvara se u ${domain}/login, odnosno za stvoriti-post url čvora izgledat će ovako ${domain}/posts.

Tako smo, vođeni DRY principom, malo poboljšali scenarij.

Spremite token u varijablu

Budući da govorimo o varijablama, proširimo malo ovu temu. Trenutno, u slučaju uspješne prijave, od servera dobivamo autorizacijski token koji će nam trebati u sljedećim zahtjevima. Spremimo ovaj token u varijablu. Jer vrijednost varijable bit će određena tijekom izvođenja skripte, za to koristimo poseban mehanizam - dinamičke varijable.

Prvo, izvršimo zahtjev za prijavu. U kartici Raščlanjeno odgovorite, pomaknite kursor preko tokena i u kontekstnom izborniku (koji se poziva ili desnom tipkom miša ili klikom na gumb ...) odaberite stavku Dodijeli varijabli. Pojavit će se dijaloški okvir sa sljedećim poljima:

  • Put — koji se dio odgovora uzima (u našem slučaju jeste body.token)
  • Trenutna vrijednost — koja se vrijednost nalazi duž Puta (u našem slučaju to je vrijednost tokena)
  • Naziv varijable — naziv varijable gdje Trenutna vrijednost bit će sačuvani. U našem slučaju bit će token
  • Čvor — u kojem od predaka će se kreirati varijabla Naziv varijable. Odaberimo Projekt

Dovršeni dijalog izgleda ovako:

TestMace. Brzi početak

Sada svaki put kada se čvor izvrši prijava dinamička varijabla token ažurirat će se novom vrijednošću iz odgovora. I ova varijabla će biti pohranjena u Projekt čvor i, zahvaljujući nasljeđivanju, bit će dostupan potomcima.

Da biste pristupili dinamičkim varijablama, morate koristiti ugrađena varijabla $dynamicVar. Na primjer, da biste pristupili pohranjenom tokenu, trebate nazvati ${$dynamicVar.token}.

Prosljeđujemo autorizacijski token u zahtjeve

U prethodnim koracima dobili smo autorizacijski token i sve što trebamo učiniti je dodati zaglavlje Authorization sa značenjem Bearer <tokenValue> u svim zahtjevima koji zahtijevaju autorizaciju, uključujući stvoriti-post. Postoji nekoliko načina za to:

  1. Ručno kopirajte token i dodajte zaglavlje autorizacije zahtjevima od interesa. Metoda funkcionira, ali je njezina upotreba ograničena samo na zahtjeve tipa "napravljeno i bačeno". Nije prikladno za opetovano izvršavanje skripti
  2. Koristite funkcionalnost autorizacija.
  3. Za korištenje zadana zaglavlja

Korištenje druge metode čini se očiglednim, ali u kontekstu ovog članka, ovaj pristup je... nezanimljiv. Pa, stvarno: mehanizam autorizacije plus minus poznat vam je iz drugih alata (čak i ako imamo stvari poput ovlaštenje nasljeđivanje) i malo je vjerojatno da će izazvati pitanja.

Druga stvar su zadana zaglavlja! Ukratko, zadana zaglavlja su naslijeđena HTTP zaglavlja koja se prema zadanim postavkama dodaju zahtjevu osim ako nisu izričito onemogućena. Pomoću ove funkcije možete, na primjer, implementirati prilagođenu autorizaciju ili se jednostavno riješiti dupliciranja u skriptama. Iskoristimo ovu značajku za prosljeđivanje tokena u zaglavlja.

Prethodno smo token oprezno spremili u dinamičku varijablu $dynamicVar.token na razini Projektnog čvora. Sve što preostaje je učiniti sljedeće:

  1. Definirajte zadani naslov Authorization s vrijednošću Bearer ${$dynamicVar.token} na razini Projektnog čvora. Da biste to učinili, u projektnom sučelju čvora trebate otvoriti dijaloški okvir sa zadanim naslovima (gumb Zaglavlja u gornjem desnom kutu) i dodajte odgovarajući naslov. Dijalog s ispunjenim vrijednostima izgledat će ovako:
    TestMace. Brzi početak
  2. Onemogućite ovo zaglavlje u zahtjevu za prijavu. To je razumljivo: u trenutku prijave još nemamo token i instalirat ćemo ga uz ovaj zahtjev. Stoga, u sučelju za prijavu zahtjeva u kartici Zaglavlja na području Naslijeđen uklonite oznaku iz zaglavlja Autorizacija.

To je sve. Sada će se zaglavlje autorizacije dodati svim zahtjevima koji su djeca čvora projekta, osim čvora za prijavu. Ispostavilo se da u ovoj fazi već imamo spremnu skriptu i sve što trebamo učiniti je pokrenuti je. Skriptu možete pokrenuti odabirom trčanje u kontekstnom izborniku čvora projekta.

Provjera ispravnosti izrade objave

U ovoj se fazi naša skripta može prijaviti i pomoću autorizacijskog tokena stvoriti objavu. Međutim, moramo biti sigurni da novostvoreni post ima točan naziv. To jest, u biti, sve što preostaje je učiniti sljedeće:

  • Pošaljite zahtjev za primanje objave po ID-u,
  • Provjerite podudara li se ime primljeno s poslužitelja s imenom poslanim prilikom kreiranja objave

Pogledajmo prvi korak. Budući da se vrijednost id-a utvrđuje tijekom izvođenja skripte, trebate stvoriti dinamičku varijablu (nazovimo je postId) iz čvora stvoriti-post na razini Projektnog čvora. Već znamo kako to učiniti, samo pogledajte odjeljak Spremite token u varijablu. Sve što preostaje je kreirati zahtjev za primanje objave koristeći ovaj ID. Da bismo to učinili, kreirajmo RequestStep get-post sa sljedećim parametrima:

  • Vrsta zahtjeva: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Da bismo proveli drugi korak, moramo se upoznati sa Tvrdnja čvor. Čvor Assertion je čvor koji vam omogućuje pisanje provjera za određene zahtjeve. Svaki Assertion čvor može sadržavati nekoliko tvrdnji (provjera). Više o svim vrstama tvrdnji možete pročitati u našem dokumentacija. Koristit ćemo se Compare tvrdnja s operatorom equal. Postoji nekoliko načina za stvaranje tvrdnji:

  1. dugo. Ručno izradite čvor Assertion iz kontekstnog izbornika čvora RequestStep. U kreiranom čvoru Tvrdnje dodajte tvrdnju od interesa i ispunite polja.
  2. Brzo. Stvorite čvor tvrdnje zajedno s tvrdnjom iz odgovora čvora RequestStep pomoću kontekstnog izbornika

Upotrijebimo drugu metodu. Ovako će to izgledati za naš slučaj.

TestMace. Brzi početak

Za one koji ne razumiju, evo što se događa:

  1. Napravite zahtjev u čvoru get-post
  2. U kartici Raščlanjeno odgovorite, pozovite kontekstni izbornik i odaberite Stvorite tvrdnju -> Usporedi -> Jednak

Čestitamo, napravili smo naš prvi test! Jednostavno, zar ne? Sada možete u potpunosti pokrenuti skriptu i uživati ​​u rezultatu. Ostaje ga samo malo preraditi i izvaditi title u zasebnu varijablu. Ali ovo ćemo vam ostaviti kao domaću zadaću)

Zaključak

U ovom smo vodiču izradili cjeloviti scenarij i istovremeno pregledali neke značajke našeg proizvoda. Naravno, nismo iskoristili sve funkcionalnosti te ćemo u sljedećim člancima dati detaljan pregled mogućnosti TestMacea. Ostanite s nama!

PS Za one koji su previše lijeni za reprodukciju svih koraka, ljubazno smo zabilježili spremište s projektom iz članka. Možete ga otvoriti s file -> Otvoreni projekt i odaberite mapu Projekt.

Izvor: www.habr.com

Dodajte komentar