TestNG je testovací rámec, ktorý pokrýva rôzne typy testovacích návrhov, ako napríklad jednotkový test, funkčný test, úplný test, test používateľského rozhrania a integračný test.
V kóde Testng môžete spustiť jeden alebo viac testovacích prípadov.
Ak nie je definovaná priorita testu, pri spustení viacerých testovacích prípadov priradí TestNG všetkým @Test prioritu ako nulu (0).
Teraz, počas behu; nižšie priority budú naplánované ako prvé.
V tomto výučbe sa dozviete -
- Ukážka kódu TestNG bez priority
- Ukážka kódu TestNG bez priority v abecednom poradí
- Ako nastaviť prioritu v TestNG
- Metódy s rovnakou prioritou
- Kombinácia prioritných (s rovnakou prioritou) a neprioritných metód
Ukážka kódu TestNG bez priority
Zoberme si scenár, v ktorom bude pre úspešné absolvovanie všetkých testovacích prípadov potrebné sekvenovanie:
Scenár: Vytvorte kód, v ktorom sa vyžaduje, aby ste vyhľadávali Google pomocou konkrétneho kľúčového slova, napríklad „Facebook“. Teraz skontrolujte, či je názov prehľadávača zmenený na „Facebook - Vyhľadávanie Google“.
Poznámka: Každý krok, ktorý kódujete, by mal byť tvorený samostatnými metódami
Metóda 1 : Otvorte prehliadač a povedzte Firefox (openBrowser ())
Metóda 2 : Spustenie stránky Google.com (launchGoogle ())
Metóda 3 : Vykonajte vyhľadávanie pomocou výrazu „Facebook“ (performSearchAndClick1stLink ())
Metóda 4 : Overenie názvu stránky vyhľadávania Google (FaceBookPageTitleVerification ())
Kód pre náš scenár :
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;verejná trieda Priority_In_testNG {Ovládač WebDriver;// Metóda 1: Otvorte program Brower, povedzte Firefox@Testpublic void openBrowser () {ovládač = nový FirefoxDriver ();}// Metóda 2: Spustenie stránky Google.com@Testpublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Metóda 3: Vykonajte vyhľadávanie pomocou „Facebooku“@Testpublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Hľadať']")). sendKeys ("Facebook");}// Metóda 4: Overte názov vyhľadávacej stránky Google.@Testpublic void FaceBookPageTitleVerification () vyvolá výnimku {driver.findElement (By.xpath (".//*[@ value = 'Search']"))). click ();Závit. Spánok (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Vysvetlenie kódu
Ako už bolo spomenuté vyššie, vytvorili sme 4 testovacie prípady na vykonávanie každej akcie nezávislými metódami.
- Prvá metóda (openBrowser) uvádza inicializáciu prehliadača Firefox.
- Druhá metóda (launchGoogle) uvádza, že spustenie stránky Google.com sa nachádza v inicializovanom prehliadači.
- Tretia metóda (peformSeachAndClick1stLink) uvádza, že sa vyhľadávanie uskutoční vo vyhľadávacom poli (pomocou xpath (".//*[@title='Search ']") s hľadaným výrazom ako Facebook a
- Štvrtá a posledná metóda (FaceBookPageTitleVerification) uvádza, že kliknite na ikonu vyhľadávania Google a overte, či sa názov prehliadača zmenil na Facebook - Google Search.
Teraz spustite tento kód pomocou testNG, ako je znázornené na videu, kde nájdete všetky testovacie prípady, ktoré zlyhávajú. Dôvod zlyhania: pretože existuje závislosť predchádzajúceho testovacieho prípadu od úspešného absolvovania, bude odovzdaný iba aktuálny testovací prípad.
V tomto prípade,
- Prvá metóda, ktorá sa vykoná, je openBrowser (). Prešlo to, pretože nemá žiadnu závislosť.
- Druhou vykonanou metódou je FaceBookPageTitleVerification (); zlyháva, pretože sa pokúšame kliknúť na tlačidlo vyhľadávania a overiť názov prehľadávača.
- Vidíte, že ak aktivita vyhľadávania nie je spracovaná, potom môže prejsť ktorýkoľvek ďalší krok. To je dôvod, prečo moje testovacie prípady zlyhávajú.
PROSÍM: openBrowserZlyhalo: FaceBookPageTitleVerificationZlyhalo: launchGoogleZlyhalo: peformSeachAndClick1stLink
Ukážka kódu TestNG bez priority v abecednom poradí
Ak neuvádzame žiadnu prioritu, testng vykoná metódy @Test na základe abecedného poradia ich názvov metód bez ohľadu na ich miesto implementácie v kóde.
balíček com.guru.testngannotations;import org.testng.annotations.Test;verejná trieda TestNG_Priority_Annotations {@Testpublic void c_method () {System.out.println ("Som v metóde C");}@Testpublic void b_method () {System.out.println ("Som v metóde B");}@Testpublic void a_method () {System.out.println ("Som v metóde A");}@Testpublic void e_method () {System.out.println ("Som v metóde E");}@Testpublic void d_method () {System.out.println ("Som v metóde D");}}
Výkon
Som v metóde ASom v metóde BSom v metóde C.Som v metóde DSom v metóde E.
Aj keď sme metódy definovali náhodne (c, b, a, e, d), testng vykonal metódy na základe ich názvov metód s ohľadom na abecedné poradie a to isté sa prejavilo aj na výstupe.
Ako nastaviť prioritu v TestNG
Ako ste videli v predchádzajúcom príklade, že na úspešné absolvovanie tohto scenára je potrebné radenie, takže budeme upravovať predchádzajúcu časť kódu pomocou parametra priority tak, aby každý test bežal oproti priorite, ktorá im bola pridelená.
Teraz, ako vidíte, sme priradili prioritu každému testovaciemu prípadu, čo znamená, že testovací prípad bude najskôr vykonaný s nižšou prioritou.
Priorita v testNG v akcii
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;verejná trieda Priority_In_testNG {Ovládač WebDriver;// Metóda 1: Otvorte Prehliadač a povedzte Firefox@Test (priorita = 1)public void openBrowser () {ovládač = nový FirefoxDriver ();}// Metóda 2: Spustenie stránky Google.com@Test (priorita = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Metóda 3: Vykonajte vyhľadávanie pomocou „Facebooku“@Test (priorita = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Hľadať']")). sendKeys ("Facebook");}// Metóda 4: Overte názov vyhľadávacej stránky Google.@Test (priorita = 4)public void FaceBookPageTitleVerification () vyvolá výnimku {driver.findElement (By.xpath (".//*[@ value = 'Search']"))). click ();Závit. Spánok (3000);Assert.assertEquals (driver.getTitle (). Contains ("Facebook - Google Search"), true);}}
Vysvetlenie kódu
Po priradení priority všetkým testovacím prípadom spustite vyššie uvedený kód pomocou testNG, ako je uvedené vo videu-2 uvedenom nižšie.
Tu vidíte, že testovacie prípady majú prioritu. Najprv sa vykonajú testovacie prípady s nižšou prioritou, tj. Teraz sa v testovacích prípadoch uskutoční postupné vykonávanie podľa priority. Všetky testovacie prípady teda teraz prechádzajú.
Všimnite si konzolu zatmenia:
Výstup :
PROSÍM: openBrowserPREDANÉ: launchGoogleZARIADENÉ: peformSearchAndClick1stLinkZARIADENÉ: FaceBookPageTitleVerification
Číslo 0 má najvyššiu prioritu (vykoná sa najskôr) a priorita pokračuje na základe daného čísla, tj. 0 má najvyššiu prioritu ako 1. 1 má najvyššiu prioritu ako 2 atď.
balíček com.guru.testngannotations;import org.testng.annotations.Test;verejná trieda TestNG_Priority_Annotations {@Test (priorita = 6)public void c_method () {System.out.println ("Som v metóde C");}@Test (priorita = 9)public void b_method () {System.out.println ("Som v metóde B");}@Test (priorita = 1)public void a_method () {System.out.println ("Som v metóde A");}@Test (priorita = 0)public void e_method () {System.out.println ("Som v metóde E");}@Test (priorita = 3)public void d_method () {System.out.println ("Som v metóde D");}}
Výkon
Som v metóde E.Som v metóde ASom v metóde DSom v metóde C.Som v metóde B
Tu sme stanovili priority ako 0,1,3,6,9. Najprv sa teda vykoná metóda s prioritou 0 a potom metóda s prioritou-1 atď. Názov metódy v abecednom poradí tu nebude braný do úvahy, pretože sme stanovili priority
Metódy s rovnakou prioritou:
Je pravdepodobné, že metódy môžu obsahovať rovnakú prioritu. V týchto prípadoch testng zohľadňuje abecedné poradie názvov metód, ktorých priorita je rovnaká.
balíček com.guru.testngannotations;import org.testng.annotations.Test;verejná trieda TestNG_Priority_Annotations {@Test (priorita = 6)public void c_method () {System.out.println ("Som v metóde C");}@Test (priorita = 9)public void b_method () {System.out.println ("Som v metóde B");}@Test (priorita = 6)public void a_method () {System.out.println ("Som v metóde A");}@Test (priorita = 0)public void e_method () {System.out.println ("Som v metóde E");}@Test (priorita = 3)public void d_method () {System.out.println ("Som v metóde D");}}
Výkon
Som v metóde E.Som v metóde DSom v metóde ASom v metóde C.Som v metóde B
Tu sa 'e' a 'd' vykonávajú na základe ich hodnôt priority. Ale metódy „a“ a „c“ obsahujú rovnakú hodnotu priority (6). Takže tu testng zvažuje abecedné poradie 'a' a 'c' a podľa toho ich vykonáva.
Kombinácia prioritných (s rovnakou prioritou) a neprioritizovaných metód:
V takom prípade pokryjeme dva prípady v jednej testovacej triede.
- Metódy s rovnakou hodnotou priority.
- Viac ako jedna metóda bez priority.
balíček com.guru.testngannotations;import org.testng.annotations.Test;verejná trieda TestNG_Priority_Annotations {@Test ()public void c_method () {System.out.println ("Som v metóde C");}@Test ()public void b_method () {System.out.println ("Som v metóde B");}@Test (priorita = 6)public void a_method () {System.out.println ("Som v metóde A");}@Test (priorita = 0)public void e_method () {System.out.println ("Som v metóde E");}@Test (priorita = 6)public void d_method () {System.out.println ("Som v metóde D");}}
Výkon:
Som v metóde BSom v metóde C.Som v metóde E.Som v metóde ASom v metóde D
PROŠLO: b_methodPROŠLO: c_methodPROŠLO: e_methodPROŠLO: a_methodPROSÍM: d_method
Vysvetlenie:
Prvá preferencia: Neprioritizované metódy: „c“ a „b“: Na základe abecedného poradia sa najskôr vykonalo „b“ a potom „c“.
Druhá preferencia: Metódy s prioritou: 'a', 'e' a 'd': 'e' sa vykonalo ako prvé, pretože malo najvyššiu prioritu (0). Pretože priorita metód „a“ a „d“ bola rovnaká, testng zvážil abecedné poradie názvov ich metód. Takže medzi nimi bolo najskôr vykonané „a“ a potom „d“.
V TestNG sa rozlišujú veľké a malé písmená
Len pre vašu informáciu existuje štandardná syntax na definovanie priority v testNG, tj. @Test (priorita = 4) , predpokladajme , že ju definujete v inej syntaxi, napríklad @Test (PRIORITY = 1), potom sa vaše IDE zobrazí ako chyba kompilácie. . Pozri obrázok nižšie:
Záver:
Ako ste videli, že ak existuje požiadavka na spustenie sady testovacích prípadov v konkrétnom poradí, je možné ich ľahko vykonať pomocou priority pomocou testNG ako spusteného nástroja.
Tento výukový program je možný vďaka príspevkom Ramandeepa Singha a Rama Krishna Gadde