TestNG este un cadru de testare, care acoperă diferite tipuri de modele de testare, cum ar fi un test unitar, un test funcțional, un test end to end, un test UI și un test de integrare.
Puteți rula un singur sau mai multe cazuri de testare în codul Testng.
Dacă prioritatea de testare nu este definită în timp ce rulează mai multe cazuri de testare, TestNG atribuie tuturor priorităților @Test o valoare zero (0).
Acum, în timp ce alergați; prioritățile mai mici vor fi programate mai întâi.
În acest tutorial, veți învăța -
- Demo de cod TestNG fără Prioritate
- Demonstrarea codului TestNG fără prioritate în ordine alfabetică
- Cum să setați Prioritatea în TestNG
- Metode cu aceeași prioritate
- Combinând atât metode cu prioritate (având aceeași prioritate), cât și metode fără prioritate
Demo de cod TestNG fără Prioritate
Să luăm un scenariu în care secvențierea va fi necesară pentru a trece toate cazurile de testare:
Scenariu: generați un cod în care vi se cere să efectuați o căutare Google cu un anumit cuvânt cheie, spuneți „Facebook”. Acum, verificați dacă titlul browserului este schimbat în „Facebook - Căutare Google”.
Notă: Fiecare pas pe care îl codificați trebuie să fie în metode separate
Metoda 1 : Deschideți browserul spune că Firefox (openBrowser ())
Metoda 2 : Lansați Google.com (launchGoogle ())
Metoda 3 : efectuați o căutare utilizând „Facebook” (performSearchAndClick1stLink ())
Metoda 4 : verificați titlul paginii de căutare Google (FaceBookPageTitleVerification ())
Cod pentru scenariul nostru :
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;clasă publică Priority_In_testNG {Driver WebDriver;// Metoda 1: Deschideți Brower spune Firefox@Testpublic void openBrowser () {driver = nou FirefoxDriver ();}// Metoda 2: Lansați Google.com@Testlansare publică nulăGoogle () {driver.get („http://www.google.co.in”);}// Metoda 3: Efectuați o căutare utilizând „Facebook”@Testpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// Metoda 4: Verificați titlul paginii de căutare Google.@Testpublic void FaceBookPageTitleVerification () aruncă excepție {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Conține („Facebook - Căutare Google”), adevărat);}}
Explicația Codului
După cum sa menționat mai sus, am creat 4 cazuri de testare pentru efectuarea fiecărei acțiuni într-o metodă independentă.
- Prima metodă (openBrowser) indică inițializarea browserului Firefox.
- A doua metodă (launchGoogle) afirmă că lansarea Google.com se află în browserul inițializat.
- A treia metodă (peformSeachAndClick1stLink) afirmă că efectuează o căutare în caseta de căutare (cu xpath (".//*[@title='Căutare ']") cu un termen de căutare ca Facebook și
- A patra și ultima metodă (FaceBookPageTitleVerification) afirmă că faceți clic pe pictograma de căutare a Google și verificați dacă titlul browserului a fost schimbat în Facebook - Căutare Google.
Acum rulați acest cod folosind testNG așa cum se arată în videoclip, veți găsi că toate cazurile de testare eșuează. Motivul eșecului: întrucât există o dependență de testul de test anterior care trebuie trecut, va fi trecut doar decât testul de testare curent.
În acest caz,
- Prima metodă care se execută este openBrowser (). A fost trecut pentru că nu are nicio dependență.
- A doua metodă executată este FaceBookPageTitleVerification (); nu reușește, deoarece încercăm să facem clic pe butonul de căutare și să verificăm titlul browserului.
- Puteți vedea că, dacă activitatea de căutare nu este procesată, atunci cum poate fi trecut orice alt pas. Prin urmare, acesta este motivul pentru care cazurile mele de testare eșuează.
TRECUT: openBrowserEȘUAT: FaceBookPageTitleVerificationEȘUAT: lansați GoogleEȘUAT: peformSeachAndClick1stLink
Demonstrarea codului TestNG fără prioritate în ordine alfabetică
Dacă nu menționăm nicio prioritate, testng va executa metodele @Test bazate pe ordinea alfabetică a numelor metodelor lor, indiferent de locul lor de implementare în cod.
pachet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Testpublic void c_method () {System.out.println („Sunt în metoda C”);}@Testpublic void b_method () {System.out.println („Sunt în metoda B”);}@Testpublic void a_method () {System.out.println („Sunt în metoda A”);}@Testpublic void e_method () {System.out.println („Sunt în metoda E”);}@Testpublic void d_method () {System.out.println („Sunt în metoda D”);}}
Ieșire
Sunt în metoda ASunt în metoda BSunt în metoda CSunt în metoda DSunt în metoda E
Deși am definit metodele în mod aleatoriu (c, b, a, e, d), testng a executat metodele pe baza numelor lor de metode, luând în considerare ordinea alfabetică și același lucru a fost reflectat și în rezultat.
Cum să setați Prioritatea în TestNG
Așa cum ați văzut în exemplul anterior că secvențierea este necesară pentru a trece acest scenariu, așa că vom modifica bucata de cod anterioară cu Parametrul de prioritate, astfel încât fiecare test să ruleze în raport cu prioritatea atribuită lor.
Acum, după cum puteți vedea, am atribuit prioritatea fiecărui caz de testare, înseamnă că testul de caz va fi executat mai întâi valoarea priorității mai mici.
Prioritate în testNG în acțiune
import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;clasă publică Priority_In_testNG {Driver WebDriver;// Metoda 1: Deschideți browserul spune Firefox@Test (prioritate = 1)public void openBrowser () {driver = nou FirefoxDriver ();}// Metoda 2: Lansați Google.com@Test (prioritate = 2)lansare publică nulăGoogle () {driver.get („http://www.google.co.in”);}// Metoda 3: Efectuați o căutare utilizând „Facebook”@Test (prioritate = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// Metoda 4: Verificați titlul paginii de căutare Google.@Test (prioritate = 4)public void FaceBookPageTitleVerification () aruncă excepție {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Thread.sleep (3000);Assert.assertEquals (driver.getTitle (). Conține („Facebook - Căutare Google”), adevărat);}}
Explicația Codului
După ce ați atribuit prioritate fiecărei probe, rulați codul de mai sus folosind testNG așa cum se arată în Video-2 menționat mai jos.
Aici, puteți vedea că cazurile de testare sunt prioritare. Cazurile de testare cu prioritate mai mică sunt executate mai întâi, adică acum există o execuție secvențială în funcție de prioritate în cazurile de testare. Prin urmare, toate cazurile de testare trec acum.
Rețineți consola eclipsei:
Ieșire :
TRECUT: openBrowserTRECUT: lansează GoogleTRIMITE: peformSearchAndClick1stLinkTRECUT: FaceBookPageTitleVerification
Numărul 0 are cea mai mare prioritate (va fi executat mai întâi) și prioritatea continuă pe baza numărului dat, adică 0 are cea mai mare prioritate decât 1. 1 are cea mai mare prioritate decât 2 și așa mai departe.
pachet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (prioritate = 6)public void c_method () {System.out.println („Sunt în metoda C”);}@Test (prioritate = 9)public void b_method () {System.out.println („Sunt în metoda B”);}@Test (prioritate = 1)public void a_method () {System.out.println („Sunt în metoda A”);}@Test (prioritate = 0)public void e_method () {System.out.println („Sunt în metoda E”);}@Test (prioritate = 3)public void d_method () {System.out.println („Sunt în metoda D”);}}
Ieșire
Sunt în metoda ESunt în metoda ASunt în metoda DSunt în metoda CSunt în metoda B
Aici am oferit prioritățile 0,1,3,6,9. Deci, metoda cu prioritate 0 este executată mai întâi, apoi metoda cu prioritate-1 și așa mai departe. Aici numele metodei de ordine alfabetică nu va fi luat în considerare, deoarece am furnizat prioritățile
Metode cu aceeași prioritate:
Este posibil ca metodele să conțină aceeași prioritate. În aceste cazuri, testng ia în considerare ordinea alfabetică a numelor de metode a căror prioritate este aceeași.
pachet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test (prioritate = 6)public void c_method () {System.out.println („Sunt în metoda C”);}@Test (prioritate = 9)public void b_method () {System.out.println („Sunt în metoda B”);}@Test (prioritate = 6)public void a_method () {System.out.println („Sunt în metoda A”);}@Test (prioritate = 0)public void e_method () {System.out.println („Sunt în metoda E”);}@Test (prioritate = 3)public void d_method () {System.out.println („Sunt în metoda D”);}}
Ieșire
Sunt în metoda ESunt în metoda DSunt în metoda ASunt în metoda CSunt în metoda B
Aici „e” și „d” sunt executate pe baza valorilor lor prioritare. Dar metodele „a” și „c” conțin aceeași valoare de prioritate (6). Deci, aici testng are în vedere ordinea alfabetică a „a” și „c” și le execută în consecință.
Combinând atât metode cu prioritate (având aceeași prioritate), cât și metode fără prioritate:
În acest caz, vom acoperi două cazuri într-o singură clasă de testare.
- Metode cu aceeași valoare de prioritate.
- Mai multe metode fără prioritate.
pachet com.guru.testngannotations;import org.testng.annotations.Test;public class TestNG_Priority_Annotations {@Test()public void c_method () {System.out.println („Sunt în metoda C”);}@Test()public void b_method () {System.out.println („Sunt în metoda B”);}@Test (prioritate = 6)public void a_method () {System.out.println („Sunt în metoda A”);}@Test (prioritate = 0)public void e_method () {System.out.println („Sunt în metoda E”);}@Test (prioritate = 6)public void d_method () {System.out.println („Sunt în metoda D”);}}
Ieșire:
Sunt în metoda BSunt în metoda CSunt în metoda ESunt în metoda ASunt în metoda D
TRECUT: b_metodăTRECUT: c_metodăTRECUT: metoda e_TRECUT: a_methodTRECUT: d_method
Explicaţie:
Prima preferință: Metode fără prioritate: „c” și „b”: pe baza ordinii alfabetice, „b” a fost executat mai întâi și apoi „c”.
A doua preferință: Metode cu prioritate: „a”, „e” și „d”: „e” a fost executată mai întâi deoarece avea cea mai mare prioritate (0). Deoarece prioritatea metodelor „a” și „d” au fost aceleași, testarea a luat în considerare ordinea alfabetică a numelor metodelor lor. Deci, între ei, a fost executat mai întâi „a” și apoi „d”.
Sensibil la majuscule și minuscule în TestNG
Doar pentru informațiile dvs. există o sintaxă standard pentru definirea priorității în testNG, adică @Test (prioritate = 4) , să presupunem că o definiți în altă sintaxă, spuneți @Test (PRIORITATE = 1), apoi IDE-ul dvs. îl va arăta ca o eroare de compilare . Consultați imaginea de mai jos:
Concluzie:
După cum ați văzut că, dacă există cerința de a rula un set de test-case într-o secvență specifică, atunci se poate face cu ușurință folosind Priority folosind testNG ca instrument de rulare.
Acest tutorial este posibil datorită contribuțiilor lui Ramandeep Singh și Rama Krishna Gadde