Dataprovider și TestNG XML: Parametrizarea în Selenium(Exemplu)

iun. 9, 2021
admin

În timp ce creăm software, ne dorim întotdeauna ca acesta să funcționeze diferit cu un set diferit de date. Când vine vorba de testarea aceluiași software, nu putem fi nedrepți să îl testăm doar cu un singur set de date. Aici, din nou, trebuie să verificăm dacă sistemul nostru preia toate seturile de combinații pe care se așteaptă să le suporte. Pentru aceasta, trebuie să parametrizăm scipturile noastre de testare. Aici intervine parametrizarea în imagine.

Parametrizarea în Selenium

Parametrizarea în Selenium este un proces de parametrizare a scripturilor de testare pentru a transmite mai multe date aplicației în timpul execuției. Este o strategie de execuție care execută automat cazuri de testare de mai multe ori folosind valori diferite. Conceptul realizat prin parametrizarea scripturilor de testare se numește Data Driven Testing.

În acest tutorial, veți învăța-

  • Tipul de parametrizare în TestNG-
  • Anotarea parametrilor cu Testng.xml
  • Soluționarea problemelor
  • Parametri folosind Dataprovider
  • Invocarea DataProvider din clase diferite
  • Tipuri de parametri în Dataprovider

Tip de parametrizare în TestNG-

Pentru a face parametrizarea mai clară, vom trece în revistă opțiunile de parametrizare în unul dintre cele mai populare framework-uri pentru Selenium Webdriver – TestNG.

Există două moduri prin care putem realiza parametrizarea în TestNG

  1. Cu ajutorul adnotării Parameters și a fișierului TestNG XML.

  2. Cu ajutorul adnotării DataProvider.

Parametrii din Testng.xml pot fi la nivel de suită sau la nivel de test

Parametrii din DataProvider pot lua ca parametru metoda și ITestContext.

Să le studiem în detaliu –

Parameters Annotation in TestNG

Parameters Annotation in TestNG este o metodă utilizată pentru a trece valori către metodele de testare ca argumente folosind fișierul .xml. Utilizatorii pot fi nevoiți să transmită valorile către metodele de testare în timpul rulării. Metoda de adnotare @Parameters poate fi utilizată în orice metodă care are adnotarea @Test, @Before, @After sau @Factory.

Parameters annotation with Testng.xml

Selectați parametrizarea cu ajutorul adnotărilor atunci când doriți să vă ocupați de complexitate & numărul de combinații de intrare este mai mic.

Să vedem cum funcționează

Scenariu de testare

Pasul 1) Lansați browserul & mergeți la Google.com

Pasul 2) Introduceți un cuvânt cheie de căutare

Pasul 3) Verificați că valoarea introdusă este aceeași cu cea furnizată de datele noastre de test

Pasul 4) Repetați 2 & 3 până când toate valorile sunt introduse

Autorul testului . Cheie de căutare
Guru99 India
Krishna Statele Unite ale Americii
. Bhupesh China

Iată un exemplu de cum se face FĂRĂ parametri

Un studiu, exemplul de mai sus. Imaginați-vă cât de complex va deveni codul atunci când vom face acest lucru pentru 3 combinații de intrare

Acum, să parametrizăm acest lucru folosind TestNG

Pentru a face acest lucru, va trebui să

  • Crearea unui fișier XML care va stoca parametrii
  • În test, adăugați adnotarea @Parameters

Iată codul complet

Test Level TestNG.xml

Fișier

ParameterWithTestNGXML.java

Instrucțiuni pentru a rula scriptul, selectați fișierul XML și Run as Test NG Suite

Faceți clic dreapta pe .xml -> Run as -> Testng Suite (Notă : Suite)

Acum, parametrii pot fi definiți la 2 niveluri

  1. Nivelul suitei – Parametrii din interiorul tag-ului <suite> din fișierul TestNG XML vor fi parametri la nivel de suită.
  2. Nivelul testului – Parametrii din interiorul tag-ului <Test> din fișierul XML de testare vor fi un parametru la nivel de test.

Iată același test cu parametrii la nivel de suită

NOTA: În cazul în care numele parametrului este același la nivel de suită și la nivel de test, atunci parametrul la nivel de test va avea prioritate față de cel la nivel de suită. Prin urmare, în acest caz, toate clasele din cadrul nivelului de testare vor partaja parametrul suprascris, iar celelalte clase care se află în afara nivelului de testare vor partaja parametrul de la nivelul suitei.

Rezolvarea problemelor

Problema nr. 1 Valoarea parametrului din testng.xml nu poate fi tipărită în parametrul metodei de testare corespunzătoare, ceea ce va genera o eroare.

Considerați următorul exemplu

Aici, atributul „author” este egal cu „Guru99”, care este un șir de caractere, iar în metoda de testare corespunzătoare se așteaptă o valoare întreagă, deci vom primi o excepție aici.

Problema nr. 2 @Parametrii dvs. nu au o valoare corespunzătoare în testing.xml.

Puteți rezolva această situație prin adăugarea adnotării @optional în parametrul corespunzător din metoda de testare.

Dispoziția # 3: Doriți să testați mai multe valori ale aceluiași parametru folosind Testng.xml

Răspunsul simplu este că acest lucru nu se poate face! Puteți avea mai mulți parametri diferiți, dar fiecare parametru nu poate avea decât o singură valoare. Acest lucru ajută la prevenirea valorilor hardcoding în script. Acest lucru face codul reutilizabil. Gândiți-vă la aceasta ca la niște fișiere de configurare pentru scriptul dumneavoastră. Dacă doriți să utilizați mai multe valori pentru un parametru, utilizați DataProviders

Data Provider in TestNG

Data Provider in TestNG este o metodă utilizată atunci când un utilizator trebuie să treacă parametri complecși. Parametrii complecși trebuie să fie creați din Java, cum ar fi obiectele complexe, obiectele din fișierele de proprietăți sau dintr-o bază de date pot fi transmise prin metoda Data Provider. Metoda este adnotată cu @DataProvider și returnează o matrice de obiecte.

Parametri folosind Dataprovider

Adnotarea @Parameters este ușoară, dar pentru a testa cu mai multe seturi de date trebuie să folosim Data Provider.

Pentru a completa mii de formulare web folosind cadrul nostru de testare avem nevoie de o metodologie diferită care ne poate oferi un set de date foarte mare într-un singur flux de execuție.

Acest concept bazat pe date este realizat prin adnotarea @DataProvider în TestNG.

Aceasta are doar un singur atribut „name”. Dacă nu specificați atributul name, atunci numele DataProvider-ului va fi același cu numele metodei corespunzătoare.

Providerul de date returnează metodei de testare un obiect JAVA bidimensional, iar metoda de testare va fi invocată de M ori într-o matrice de obiecte de tip M*N. De exemplu, dacă DataProvider returnează un array de 2*3 obiecte, cazul de test corespunzător va fi invocat de 2 ori cu 3 parametri de fiecare dată.

Exemplu complet

Invocarea DataProvider din altă clasă

În mod implicit, DataProvider locuiește în aceeași clasă în care se află metoda de testare sau în clasa sa de bază. Pentru a-l plasa într-o altă clasă, trebuie să facem ca metoda DataProviderClass să fie statică, iar în metoda de testare trebuie să adăugăm un atribut DataProviderClass în adnotarea @Test.

Exemplu de cod

TestClass ParameterDataproviderWithClassLevel.java

DataproviderClass.java

Tipuri de parametri în Dataprovider

Există două tipuri de parametri suportați de metoda DataProvider.

Method- În cazul în care același DataProvider trebuie să se comporte diferit cu diferite metode de testare , se utilizează parametrul Method.

În următorul exemplu ,

  • Verificăm dacă numele metodei este TestMethodA.
  • Dacă da, returnăm un set de valori
  • Dacă nu, returnăm un alt set de valori

Iată rezultatul

ITestContext- Se poate utiliza pentru a crea diferiți parametri pentru cazurile de testare pe baza grupurilor.

În viața reală, puteți utiliza ITestContext pentru a varia valorile parametrilor pe baza metodelor de testare, a gazdelor, a configurațiilor de testare.

În următorul exemplu de cod

  • Avem 2 grupuri A & B
  • Cărei metode de testare i se atribuie un grup
  • Dacă valoarea grupului este A, se returnează un anumit set de date
  • Dacă valoarea grupului este B, se returnează un alt set de date

Nota: Dacă executați direct clasa testng, aceasta va apela mai întâi dataprovider, care nu poate obține informații despre grupuri, deoarece grupurile nu sunt disponibile. Dar, în schimb, dacă apelați această clasă prin testng.xml, aceasta va avea informații despre grupuri disponibile cu ITestContext. Utilizați următorul XML pentru a apela testul

Summary:

  • Parametrizarea este necesară pentru a crea testarea bazată pe date.
  • TestNG suportă două tipuri de parametrizare, utilizând @Parameter+TestNG.xml și utilizând@DataProvider
  • În @Parameter+TestNG.xml parametrii pot fi plasați la nivelul suitei și la nivelul testului. Dacă

    Se declară același nume de parametru în ambele locuri; parametrul de la nivelul testului va avea prioritate față de cel de la nivelul suitei.

  • utilizând @Parameter+TestNG.xml se poate seta o singură valoare la un moment dat, dar @DataProvider returnează o matrice 2d de obiecte.
  • Dacă DataProvider este prezent în altă clasă decât clasa în care se află metoda de testare, DataProvider trebuie să fie o metodă statică.
  • Există doi parametri suportați de DataProvider: Method și ITestContext.

Lasă un răspuns

Adresa ta de email nu va fi publicată.