TestNG je okvir za testiranje koji pokriva različite vrste dizajna ispitivanja poput jediničnog testa, funkcionalnog testa, testa od kraja do kraja, testa korisničkog sučelja i testa integracije.
U svom testng kodu možete pokrenuti jedan ili više testnih slučajeva.
Ako prioritet testa nije definiran dok se izvodi više test slučajeva, TestNG dodjeljuje svim @Test prioritet kao nulu (0).
Sada, dok trčim; najprije će se zakazati niži prioriteti.
U ovom vodiču naučit ćete -
- Demonstracija TestNG koda bez prioriteta
- Demonstracija TestNG koda bez prioriteta po abecednom redu
- Kako postaviti prioritet u TestNG
- Metode s istim prioritetom
- Kombiniranje prioritetnih (s istim prioritetom) i neprioritetnih metoda
Demonstracija TestNG koda bez prioriteta
Uzmimo scenarij u kojem će biti potrebno sekvenciranje kako bi se prošli svi testovi:
Scenarij: Izradite kôd gdje trebate izvršiti Google pretraživanje s određenom ključnom riječi, recimo "Facebook". Sada provjerite je li naslov preglednika promijenjen u "Facebook - Google Search".
Napomena: Svaki korak koji kodirate treba biti u zasebnim metodama
1. način : Otvorite preglednik i recite Firefox (openBrowser ())
2. način : Pokrenite Google.com (launchGoogle ())
3. metoda : Izvršite pretraživanje pomoću "Facebook-a" (performSearchAndClick1stLink ())
4. metoda : Potvrdite naslov Google stranice pretraživanja (FaceBookPageTitleVerification ())
Kôd za naš scenarij :
uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;javna klasa Priority_In_testNG {Upravljački program za WebDriver;// Metoda 1: Otvorite Brower recite Firefox@Testjavna praznina openBrowser () {upravljački program = novi FirefoxDriver ();}// Metoda 2: Pokrenite Google.com@Testpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Metoda 3: Izvršite pretraživanje pomoću "Facebook-a"@Testjavna praznina peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// 4. metoda: Provjerite naslov Google stranice pretraživanja.@Testjavna praznina FaceBookPageTitleVerification () baca izuzetak {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Navoj.spavanje (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Objašnjenje koda
Kao što je gore spomenuto, stvorili smo 4 testna slučaja za izvođenje svake radnje neovisnim metodama.
- Prva metoda (openBrowser) navodi inicijalizaciju preglednika Firefox.
- Druga metoda (launchGoogle) navodi da se pokretanje Google.com nalazi u inicijaliziranom pregledniku.
- Treća metoda (peformSeachAndClick1stLink) navodi da pretražuju u okviru za pretraživanje (s xpath (".//*[@title='Search ']") s pojmom za pretraživanje kao Facebook i
- Četvrta i posljednja metoda (FaceBookPageTitleVerification) navodi da kliknite Googleovu ikonu pretraživanja i potvrdite da je naslov preglednika promijenjen u Facebook - Google Search.
Sada pokrenite ovaj kod pomoću testNG-a kao što je prikazano u videozapisu, vidjet ćete da svi test slučajevi ne uspijevaju. Razlog neuspjeha: jer postoji ovisnost o prijemu prethodnog testnog slučaja, proći će se samo trenutni tekući testni slučaj.
U ovom slučaju,
- Prva metoda koja se izvršava je openBrowser (). Prošao je jer nema nikakve ovisnosti.
- Druga izvršena metoda je FaceBookPageTitleVerification (); ne uspijeva jer pokušavamo kliknuti gumb za pretraživanje i provjeriti naslov preglednika.
- Možete vidjeti da ako aktivnost pretraživanja nije proces, kako se može proći bilo koji drugi korak. Stoga je to razlog što moji testni slučajevi propadaju.
PROŠLO: openBrowserFAILED: FaceBookPageTitleVerificationNEUSPJEO: pokreni GoogleFAILED: peformSeachAndClick1stLink
Demonstracija TestNG koda bez prioriteta po abecednom redu
Ako ne spominjemo nikakav prioritet, testng će izvršiti metode @Test na temelju abecednog redoslijeda imena njihovih metoda, bez obzira na njihovo mjesto implementacije u kodu.
paket com.guru.testngannotations;import org.testng.annotations.Test;javna klasa TestNG_Priority_Annotations {@Testjavna praznina c_method () {System.out.println ("Ja sam u metodi C");}@Testjavna void b_method () {System.out.println ("Ja sam u metodi B");}@Testjavna praznina a_method () {System.out.println ("Ja sam u metodi A");}@Testjavna void e_method () {System.out.println ("Ja sam u metodi E");}@Testjavna void d_method () {System.out.println ("Ja sam u metodi D");}}
Izlaz
Ja sam u metodi AJa sam u metodi BJa sam u metodi CJa sam u metodi DJa sam u metodi E
Iako smo metode definirali na slučajan način (c, b, a, e, d), testng je metode izveo na temelju njihovih naziva uzimajući u obzir abecedni redoslijed, a isto se odrazilo i na rezultatima.
Kako postaviti prioritet u TestNG
Kao što ste vidjeli u prethodnom primjeru da je sekvenciranje potrebno da bi se prošlo ovaj scenarij, tako ćemo modificirati prethodni dio koda s Priority Parameter (Parametar prioriteta) tako da bi se svaki test trebao pokretati prema prioritetu koji im je dodijeljen.
Kao što vidite, svakom smo testnom slučaju dodijelili prioritet, što znači da će testni slučaj prvo izvršiti vrijednost nižeg prioriteta.
Prioritet u testNG u akciji
uvoz org.openqa.selenium.By;uvoz org.openqa.selenium.WebDriver;uvoz org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;javna klasa Priority_In_testNG {Upravljački program za WebDriver;// Metoda 1: Otvorite preglednik, recimo Firefox@Test (prioritet = 1)javna praznina openBrowser () {upravljački program = novi FirefoxDriver ();}// Metoda 2: Pokrenite Google.com@Test (prioritet = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Metoda 3: Izvršite pretraživanje pomoću "Facebook-a"@Test (prioritet = 3)javna praznina peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Search']")). sendKeys ("Facebook");}// 4. metoda: Provjerite naslov Google stranice pretraživanja.@Test (prioritet = 4)javna praznina FaceBookPageTitleVerification () baca izuzetak {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Navoj.spavanje (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Objašnjenje koda
Nakon što dodijelite prioritet svakom test-caseu, pokrenite gornji kôd koristeći testNG kako je prikazano u Video-2 spomenutom dolje.
Ovdje možete vidjeti da su test slučajevi prioritet. Prvo se izvršavaju testni slučajevi s nižim prioritetom, tj. Sada se u testnim slučajevima izvršava sekvencijalno izvršavanje prema prioritetu. Stoga svi test slučajevi sada prolaze.
Obratite pažnju na konzolu pomrčine:
Izlaz :
PROŠLO: openBrowserPROŠLO: pokreni GooglePROŠLO: peformSearchAndClick1stLinkPROŠLO: FaceBookPageTitleVerification
Broj 0 ima najveći prioritet (prvo će se izvršiti), a prioritet se temelji na danom broju, tj. 0 ima najveći prioritet od 1. 1 ima najveći prioritet od 2 i tako dalje.
paket com.guru.testngannotations;import org.testng.annotations.Test;javna klasa TestNG_Priority_Annotations {@Test (prioritet = 6)javna praznina c_method () {System.out.println ("Ja sam u metodi C");}@Test (prioritet = 9)javna void b_method () {System.out.println ("Ja sam u metodi B");}@Test (prioritet = 1)javna praznina a_method () {System.out.println ("Ja sam u metodi A");}@Test (prioritet = 0)javna void e_method () {System.out.println ("Ja sam u metodi E");}@Test (prioritet = 3)javna void d_method () {System.out.println ("Ja sam u metodi D");}}
Izlaz
Ja sam u metodi EJa sam u metodi AJa sam u metodi DJa sam u metodi CJa sam u metodi B
Ovdje smo naveli prioritete kao 0,1,3,6,9. Dakle, prvo se izvršava metoda koja ima prioritet 0, a zatim metoda koja ima prioritet-1 i tako dalje. Ovdje se naziv metode abecednog reda neće uzimati u obzir jer smo naveli prioritete
Metode s istim prioritetom:
Možda postoji mogućnost da metode sadrže isti prioritet. U tim slučajevima testng razmatra abecedni redoslijed naziva metoda čiji je prioritet isti.
paket com.guru.testngannotations;import org.testng.annotations.Test;javna klasa TestNG_Priority_Annotations {@Test (prioritet = 6)javna praznina c_method () {System.out.println ("Ja sam u metodi C");}@Test (prioritet = 9)javna void b_method () {System.out.println ("Ja sam u metodi B");}@Test (prioritet = 6)javna praznina a_method () {System.out.println ("Ja sam u metodi A");}@Test (prioritet = 0)javna void e_method () {System.out.println ("Ja sam u metodi E");}@Test (prioritet = 3)javna void d_method () {System.out.println ("Ja sam u metodi D");}}
Izlaz
Ja sam u metodi EJa sam u metodi DJa sam u metodi AJa sam u metodi CJa sam u metodi B
Ovdje se 'e' i 'd' izvršavaju na temelju njihovih prioriteta. Ali metode 'a' i 'c' sadrže istu vrijednost prioriteta (6). Dakle, ovdje testng razmatra abecedni redoslijed 'a' i 'c' i izvršava ih u skladu s tim.
Kombiniranje prioritetnih (s istim prioritetom) i neprioritetnih metoda:
U ovom ćemo slučaju pokriti dva slučaja u jednoj testng klasi.
- Metode koje imaju istu vrijednost prioriteta.
- Više metoda bez prioriteta.
paket com.guru.testngannotations;import org.testng.annotations.Test;javna klasa TestNG_Priority_Annotations {@Test()javna praznina c_method () {System.out.println ("Ja sam u metodi C");}@Test()javna void b_method () {System.out.println ("Ja sam u metodi B");}@Test (prioritet = 6)javna praznina a_method () {System.out.println ("Ja sam u metodi A");}@Test (prioritet = 0)javna void e_method () {System.out.println ("Ja sam u metodi E");}@Test (prioritet = 6)javna void d_method () {System.out.println ("Ja sam u metodi D");}}
Izlaz:
Ja sam u metodi BJa sam u metodi CJa sam u metodi EJa sam u metodi AJa sam u metodi D
PROŠLO: b_metodaPROŠLO: c_metodaPROŠLO: e_metodaPROŠLO: a_metodaPROŠLO: d_metoda
Obrazloženje:
Prva preferencija: Neprioritetne metode: 'c' i 'b': Na temelju abecednog reda prvo je izvršena 'b', a zatim 'c'.
Druga prednost: Prioritizirane metode: 'a', 'e' i 'd': 'e' je prvo izvršeno jer je imalo najveći prioritet (0). Kako su prioriteti metoda 'a' i 'd' bili isti, testng je razmotrio abecedni redoslijed naziva njihovih metoda. Dakle, između njih je prvo izvedeno "a", a zatim "d".
U TestNG-u razlikuju velika i mala slova
Samo za vašu informaciju postoji standardna sintaksa za definiranje prioriteta u testNG-u, tj. @Test (prioritet = 4) , pretpostavimo da je definirate u nekoj drugoj sintaksi, recimo @Test (PRIORITY = 1), tada će vaš IDE to prikazati kao pogrešku kompilacije . Pogledajte sliku ispod:
Zaključak:
Kao što ste vidjeli da ako postoji potreba za pokretanjem skupa test- casea u određenom slijedu, to se lako može učiniti korištenjem Prioritya koristeći testNG kao alat za pokretanje.
Ovaj je vodič omogućen zahvaljujući doprinosima Ramandeep Singha i Rame Krišne Gaddea