TestMace. Schnell Start

TestMace. Schnell Start

Moien alleguer. Mir kommen lues a lues aus de Schatten a fuere weider mat der Serie vun Artikelen iwwer eise Produkt. Nach virdrun iwwerpréiwen Artikel, mir kruten vill Feedback (meeschtens positiv), Virschléi a Feeler Rapporten. Haut wäerte mir weisen TestMace an Aktioun an Dir wäert fäeg sinn e puer vun de Funktiounen vun eiser Applikatioun ze schätzen. Fir eng méi komplett Tauche roden ech Iech op eis Dokumentatioun op http://docs-ru.testmace.com. Also, loosst eis goen!

Kader

Fänke mer mat der Banalitéit un. D'Applikatioun ass verfügbar an tatsächlech op dräi Plattformen getest - Linux, Windows, MacOS. Dir kënnt den Installateur fir den OS eroflueden wou Dir interesséiert sidd eiser Websäit. Fir Linux Benotzer ass et méiglech ze installéieren snap Package. Mir hoffen wierklech, datt de Microsoft Store an den App Store geschwënn derzou kommen (Ass et néideg? Wat mengt Dir?).

Experimentell Szenario

Mir hunn de folgende Standardszenario als Testthema gewielt:

  • Login: Benotzer - Admin, Passwuert - Passwuert
  • eng nei Entrée dobäizemaachen
  • Loosst eis kucken ob de Rekord richteg bäigefüügt gouf

Mir testen op https://testmace-quick-start.herokuapp.com/. Dëst ass normal json-server, perfekt fir esou Applikatiounen ze testen. Mir hunn just Autorisatioun per Token op all json-Server routes bäigefüügt an eng Loginmethod erstallt fir dësen Token ze kréien. Mir wäerte progressiv plënneren, a lues a lues eise Projet verbesseren.

E Projet erstellen a probéiert eng Entitéit ouni Autorisatioun ze kreéieren

Als éischt, loosst eis en neie Projet erstellen (Fichier->Neit Projet). Wann Dir d'Applikatioun fir d'éischte Kéier lancéiert, gëtt en neie Projet automatesch op. Als éischt, loosst eis probéieren eng Ufro ze maachen fir en neie Rekord ze kreéieren (am Fall datt d'Erstelle vun records ouni Autorisatioun verfügbar ass). Wielt Elementer aus dem Project Node Kontextmenü Node addéieren -> Ufro Schrëtt. Set den Node Numm op schafen-Post. Als Resultat gëtt en neien Node am Bam erstallt an eng Tab fir dësen Node gëtt op. Loosst eis déi folgend Ufroparameter setzen:

TestMace. Schnell Start

Wéi och ëmmer, wa mir probéieren d'Ufro ze erfëllen, gëtt de Server en 401 Code zréck an ouni Autorisatioun kréie mir näischt op dësem Server. Gutt, am Allgemengen, wéi erwaart).

Dobäizemaachen eng Autorisatioun Ufro

Wéi scho gesot, hu mir e POST Endpunkt /login, déi json als Ufro Kierper vun der Form hëlt: {"username": "<username>", "password": "<password>"}wou username и password (erëm, vum Aféierungsparagraph uewendriwwer) hunn Bedeitungen admin и password respektiv. Als Äntwert gëtt dësen Endpunkt json wéi {"token": "<token>"}. Mir wäerten et fir Autorisatioun benotzen. Loosst eis schafen Ufro Schrëtt Node mam Numm Aloggen, wäert als Virfahre handelen Projet node Benotzt Drag-and-Drop, réckelt e bestëmmten Node am Bam méi héich wéi de Node schafen-Post. Loosst eis déi folgend Parameteren op déi nei erstallt Ufro setzen:

Loosst eis d'Ufro ausféieren an den zweehonnertste Code mam Token an der Äntwert kréien. Sou eppes:

TestMace. Schnell Start

Refactoring: Domän Duplikatioun ewechhuelen

Bis elo sinn d'Ufroen net an engem eenzege Skript verbonnen. Mä dëst ass net deen eenzegen Nodeel. Wann Dir genau kuckt, mierkt Dir datt op d'mannst d'Domain a béid Ufroe duplizéiert gëtt. Net gutt. Et ass Zäit dësen Deel vum zukünftege Skript ze refactoréieren, a Variablen hëllefen eis domat.

Fir eng éischt Approximatioun déngen Variablen déi selwecht Roll wéi an aneren ähnlechen Tools a Programméierungssproochen - eliminéiert Duplikatioun, Erhéijung vun der Liesbarkeet, etc. Dir kënnt méi iwwer Variabelen liesen an eis Dokumentatioun. An dësem Fall brauche mir Benotzervariablen.

Loosst eis eng Variabel um Project Node Niveau definéieren domain mat Bedeitung https://testmace-quick-start.herokuapp.comAn. Fir dëst ass et néideg

  • Öffnen d'Tab mat dësem Node a klickt op d'Rechner Ikon uewe riets
  • Klickt op + VARIABEL bäizefügen
  • Gitt Variabel Numm a Wäert
    An eisem Fall wäert den Dialog mat der addéierter Variabel esou ausgesinn:

TestMace. Schnell Start

OK. Elo, wéinst Ierfschaft, kënne mir dës Variabel an Nokommen vun all Nistniveau benotzen. An eisem Fall sinn dës Noden Aloggen и schafen-Post. Fir eng Variabel an engem Textfeld ze benotzen, musst Dir schreiwen ${<variable_name>}. Zum Beispill gëtt d'Umeldungs-URL ëmgewandelt ${domain}/login, respektiv fir schafen-Post Node URL wäert ausgesinn ${domain}/posts.

Also, guidéiert vum DRY Prinzip, hu mir den Szenario liicht verbessert.

Späichert den Token op eng Variabel

Well mir iwwer Variabelen schwätzen, loosst eis dëst Thema e bëssen ausbauen. Am Moment, am Fall vun engem erfollegräiche Login, kréie mir vum Server en Autorisatiounstoken, dee mir a spéider Ufroe brauchen. Loosst eis dësen Token an eng Variabel späicheren. Well de Wäert vun der Variabel gëtt während der Skriptausféierung bestëmmt, mir benotzen e spezielle Mechanismus fir dëst - dynamesch Verännerlechen.

Als éischt, loosst eis eng Login Ufro ausféieren. An der Tab Parséiert Äntwert, bewegt de Cursor iwwer den Token an am Kontextmenü (deen entweder mat der rietser Maus Knäppchen genannt gëtt oder andeems Dir op de Knäppchen klickt ...) wielt den Artikel Verännerlechen zouzeschreiwen. En Dialog erschéngt mat de folgende Felder:

  • Wee - wéi en Deel vun der Äntwert geholl gëtt (an eisem Fall ass et body.token)
  • Aktuelle Wäert - wat Wäert läit laanscht de Wee (an eisem Fall ass dëst den Token Wäert)
  • Variablen Numm - Numm vun der Variabel wou Aktuelle Wäert wäert erhale bleiwen. An eisem Fall wäert et sinn token
  • Node sinn - a wéi enger vun den Vorfahren d'Variabel erstallt gëtt Variablen Numm. Loosst eis de Projet auswielen

De fäerdegen Dialog gesäit esou aus:

TestMace. Schnell Start

Elo all Kéier wann de Node ausgefouert gëtt Aloggen dynamesch Variabel token gëtt mam neie Wäert vun der Äntwert aktualiséiert. An dës Variabel wäert gespäichert ginn Projet Node an, merci fir Ierfschaft, wäert fir Nokommen sinn ginn.

Fir Zougang zu dynamesche Variablen ze kréien, musst Dir benotzen gebaut-an variabelen $dynamicVar. Zum Beispill, fir Zougang zu engem gespäichert Token ze kréien, musst Dir uruffen ${$dynamicVar.token}.

Mir passéieren d'Autorisatioun Token an Ufroen

An de fréiere Schrëtt hu mir den Autorisatiounstoken kritt an alles wat mir maache mussen ass en Header derbäi Authorization mat Bedeitung Bearer <tokenValue> an all Demanden Autorisatioun verlaangen, dorënner schafen-Post. Et gi verschidde Weeër fir dëst ze maachen:

  1. Kopéiert den Token manuell a füügt en Autorisatiounsheader un d'Ufroe vun Interesse. D'Method funktionnéiert, awer seng Notzung ass nëmme limitéiert op Ufroe vum Typ "gemaach an ewechgehäit". Net gëeegent fir widderholl Ausféierung vun Scripten
  2. Benotzt d'Funktionalitéit Autorisatioun.
  3. Ze benotzen Standard Header

Déi zweet Method ze benotzen schéngt evident, awer am Kontext vun dësem Artikel ass dës Approche ... oninteressant. Gutt, wierklech: den Autorisatiounsmechanismus plus Minus ass Iech vertraut vun aneren Tools (och wa mir Saachen hunn wéi Autorisatioun Ierfschaft) an ass onwahrscheinlech Froen ze stellen.

Eng aner Saach ass d'Default Header! An enger Nossschuel, Standard Header sinn ierflecher HTTP Header déi als Standard un d'Ufro bäigefüügt ginn, ausser explizit ausgeschalt. Mat dëser Funktionalitéit kënnt Dir zum Beispill eng personaliséiert Autorisatioun implementéieren oder einfach d'Duplikatioun an de Skripte lass ginn. Loosst eis dës Feature benotze fir en Token an den Header ze passéieren.

Virdrun hu mir virsiichteg den Token an eng dynamesch Variabel gespäichert $dynamicVar.token um Projet Node Niveau. Alles wat bleift ass déi folgend ze maachen:

  1. Definéiert Standardtitel Authorization mat Bedeitung Bearer ${$dynamicVar.token} um Projet Node Niveau. Fir dëst ze maachen, an der Project Interface vum Node musst Dir en Dialog mat Standard Rubriken opmaachen (Knäppchen Headeren an der oberer rechter Ecke) a füügt en entspriechende Titel un. Den Dialog mat de gefëllte Wäerter wäert esou ausgesinn:
    TestMace. Schnell Start
  2. Desaktivéiere vun dësem Header vun der Login Ufro. Dëst ass verständlech: zum Zäitpunkt vum Login hu mir nach keen Token a mir installéieren et mat dëser Ufro. Dofir, an der Login Interface vun der Ufro am Tab Headeren an der Regioun Ierwen uncheckt d'Autorisatioun Header.

Dat ass alles. Elo gëtt den Autorisatiounsheader op all Ufroe bäigefüügt, déi Kanner vum Project Node sinn, ausser de Login Node. Et stellt sech eraus datt mir op dëser Etapp schonn e Skript fäerdeg hunn an alles wat mir maache mussen ass et ze starten. Dir kënnt de Skript lafen andeems Dir wielt Run am Kontextmenü vum Project Node.

Kontrolléiert d'Korrektheet vun der Postkreatioun

Op dëser Etapp kann eise Skript aloggen an, mat engem Autorisatiounstoken, e Post erstellen. Wéi och ëmmer, mir musse sécher sinn datt den nei erstallte Post de richtege Numm huet. Dat ass, am Wesentlechen, alles wat bleift ass déi folgend ze maachen:

  • Schéckt eng Ufro fir e Post per ID ze kréien,
  • Kontrolléiert datt den Numm vum Server kritt entsprécht dem Numm dee geschéckt gëtt wann Dir de Post erstellt

Loosst eis den éischte Schrëtt kucken. Zënter datt den ID Wäert während der Skriptausféierung bestëmmt gëtt, musst Dir eng dynamesch Variabel erstellen (loosst eis et nennen postId) vum Node schafen-Post um Projet Node Niveau. Mir wësse scho wéi mir dëst maachen, kuckt just op d'Sektioun Späichert den Token op eng Variabel. Alles wat bleift ass eng Ufro ze kreéieren fir e Post mat dëser ID ze kréien. Fir dëst ze maachen, loosst eis e RequestStep erstellen kréien-Post mat de folgende Parameteren:

  • Ufro Typ: GET
  • URL: ${domain}/posts/${$dynamicVar.postId}

Fir den zweete Schrëtt ëmzesetzen, musse mir eis kennen léieren Behaaptung knut. En Assertion Node ass en Node deen Iech erlaabt Schecken fir spezifesch Ufroe ze schreiwen. All Assertion Node kann verschidde Behaaptungen (Checken) enthalen. Dir kënnt méi iwwer all Zorte vu Behaaptungen aus eisem liesen Dokumentatioun. Mir wäerten benotzen Compare Behaaptung mam Bedreiwer equal. Et gi verschidde Weeër fir Behaaptungen ze kreéieren:

  1. Laang. Erstellt manuell en Assertion Node aus dem Kontextmenü vum RequestStep Node. Am Behaaptungsknuet erstallt, füügt d'Behaaptung vum Interesse derbäi a fëllt d'Felder aus.
  2. Schnell. Erstellt en Assertion Node zesumme mat enger Behaaptung vun der RequestStep Node Äntwert mam Kontextmenü

Loosst eis déi zweet Method benotzen. Esou wäert et fir eise Fall ausgesinn.

TestMace. Schnell Start

Fir déi, déi et net verstinn, hei ass wat geschitt:

  1. Maacht eng Ufro am Node kréien-Post
  2. An der Tab Parséiert Äntwert, rufft de Kontextmenü a wielt Erstelle Behaaptung -> vergläichen -> gläichberechtegt

Gratulatioun, mir hunn eisen éischten Test erstallt! Einfach, ass et net? Elo kënnt Dir de Skript komplett ausféieren an d'Resultat genéissen. Alles wat bleift ass et e bëssen ze refactoréieren an erauszehuelen title an eng separat Variabel. Mee mir loossen dat fir Iech als Hausaufgaben)

Konklusioun

An dësem Guide hu mir e vollwäertege Szenario erstallt a gläichzäiteg e puer vun de Feature vun eisem Produkt iwwerpréift. Natierlech hu mir net all d'Funktionalitéit benotzt an an den folgenden Artikelen wäerte mir en detailléierten Iwwerbléck iwwer d'Fäegkeete vum TestMace ubidden. Bleift drun!

PS Fir déi, déi ze faul sinn fir all Schrëtt ze reproduzéieren, hu mir frëndlech opgeholl repository mam Projet aus dem Artikel. Dir kënnt et opmaachen mat Fichier -> Oppene Projet a wielt de Projet Dossier.

Source: will.com

Setzt e Commentaire