TestNG er en testramme, der dækker forskellige typer testdesign som en enhedstest, funktionstest, ende til slut-test, UI-test og integrationstest.
Du kan køre en enkelt eller flere testsager i din Testng-kode.
Hvis testprioritet ikke er defineret, mens der kører flere testcases, tildeler TestNG alle @Test en prioritet som nul (0).
Nu mens du løber; lavere prioriteter planlægges først.
I denne vejledning lærer du -
- Demo af TestNG-kode uden prioritet
- Demo af TestNG-kode uden prioritet i alfabetisk rækkefølge
- Sådan indstilles prioritet i TestNG
- Metoder med samme prioritet
- Kombinerer både prioriterede (med samme prioritet) og ikke-prioriterede metoder
Demo af TestNG-kode uden prioritet
Lad os tage et scenarie, hvor der kræves sekventering for at bestå alle testsager:
Scenarie: Generer en kode, hvor du skal udføre en Google-søgning med et specifikt nøgleord, siger "Facebook". Bekræft nu, at browsertitlen er ændret til "Facebook - Google-søgning".
Bemærk: Hvert trin, som du kode, skal være i separate metoder
Metode 1 : Åbn browser, sig Firefox (openBrowser ())
Metode 2 : Start Google.com (launchGoogle ())
Metode 3 : Udfør en søgning ved hjælp af "Facebook" (performSearchAndClick1stLink ())
Metode 4 : Bekræft Googles søgesides titel (FaceBookPageTitleVerification ())
Kode til vores scenario :
importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;offentlig klasse Priority_In_testNG {WebDriver driver;// Metode 1: Åbn Brower siger Firefox@Prøveoffentlig ugyldig openBrowser () {driver = ny FirefoxDriver ();}// Metode 2: Start Google.com@Prøveoffentlig ugyldig lanceringGoogle () {driver.get ("http://www.google.co.in");}// Metode 3: Udfør en søgning ved hjælp af "Facebook"@Prøveoffentlig ugyldighed peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//* ** @ title = 'Søg']")). sendKeys ("Facebook");}// Metode 4: Bekræft Googles søgesides titel.@Prøveoffentlig ugyldighed FaceBookPageTitleVerification () kaster undtagelse {driver.findElement (By.xpath (".//* ** @ værdi = 'Søg']")). klik ();Tråd. Søvn (3000);Assert.assertEquals (driver.getTitle (). Indeholder ("Facebook - Google-søgning"), sandt);}}
Forklaring af kode
Som nævnt ovenfor har vi oprettet 4 testsager til at udføre hver handling i uafhængige metoder.
- Den første metode (openBrowser) angiver at initialisere Firefox-browseren.
- Den anden metode (launchGoogle) siger, at lanceringen af Google.com er i den initialiserede browser.
- Den tredje metode (peformSeachAndClick1stLink) angiver, at der udføres en søgning i søgefeltet (med xpath (".//* **@title='Søg ']") med et søgeudtryk som Facebook og
- Den fjerde og sidste metode (FaceBookPageTitleVerification) angiver, at klik på Googles søgeikon og bekræfte, at browsertitlen er blevet ændret til Facebook - Google Søgning.
Kør nu denne kode ved hjælp af testNG som vist i videoen, du finder ud af, at alle testsagerne fejler. Årsagen til fiasko: da der er en afhængighed af den tidligere testsag for at bestå, vil kun den nuværende kørende testsag blive bestået.
I dette tilfælde,
- Den første metode, der udføres, er openBrowser (). Det blev bestået, fordi det ikke har nogen afhængighed.
- Anden udført metode er FaceBookPageTitleVerification (); det mislykkes, fordi vi prøver at klikke på søgeknappen og bekræfte browsertitlen.
- Du kan se, at hvis søgeaktivitet ikke behandles, hvordan et andet trin kan bestå. Derfor er dette grunden til, at mine testsager ikke fungerer.
PASSED: openBrowserFAILED: FaceBookPageTitleVerificationFEJLET: launchGoogleFAILED: peformSeachAndClick1stLink
Demo af TestNG-kode uden prioritet i alfabetisk rækkefølge
Hvis vi ikke nævner nogen prioritet, vil testng udføre @Test-metoderne baseret på alfabetisk rækkefølge af deres metodenavne uanset deres implementeringssted i koden.
pakke com.guru.testngannotations;import org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Prøveoffentligt ugyldigt c_method () {System.out.println ("Jeg er i metode C");}@Prøveoffentlig ugyldighed b_method () {System.out.println ("Jeg er i metode B");}@Prøveoffentlig ugyldighed a_method () {System.out.println ("Jeg er i metode A");}@Prøveoffentlig ugyldig e_metode () {System.out.println ("Jeg er i metode E");}@Prøveoffentligt ugyldigt d_metode () {System.out.println ("Jeg er i metode D");}}
Produktion
Jeg er i metode AJeg er i metode BJeg er i metode CJeg er i metode DJeg er i metode E
Selvom vi definerede metoderne på en tilfældig måde (c, b, a, e, d), udførte testng metoderne baseret på deres metodenavne ved at overveje alfabetisk rækkefølge, og det samme blev også afspejlet i output.
Sådan indstilles prioritet i TestNG
Som du har set i det foregående eksempel, at sekventering kræves for at passere dette scenario, så ændrer vi det forrige stykke kode med prioritetsparameter, så hver test skal køre mod den prioritet, der er tildelt dem.
Nu som du kan se, har vi tildelt prioritet til hver test sag betyder test sag vil den lavere prioritets værdi udføres først.
Prioritet i testNG i aktion
importer org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations.Test;offentlig klasse Priority_In_testNG {WebDriver driver;// Metode 1: Åbn Browser, sig Firefox@Test (prioritet = 1)offentlig ugyldig openBrowser () {driver = ny FirefoxDriver ();}// Metode 2: Start Google.com@Test (prioritet = 2)offentlig ugyldig lanceringGoogle () {driver.get ("http://www.google.co.in");}// Metode 3: Udfør en søgning ved hjælp af "Facebook"@Test (prioritet = 3)offentlig ugyldighed peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//* ** @ title = 'Søg']")). sendKeys ("Facebook");}// Metode 4: Bekræft Googles søgesides titel.@Test (prioritet = 4)offentlig ugyldighed FaceBookPageTitleVerification () kaster undtagelse {driver.findElement (By.xpath (".//* ** @ værdi = 'Søg']")). klik ();Tråd. Søvn (3000);Assert.assertEquals (driver.getTitle (). Indeholder ("Facebook - Google-søgning"), sandt);}}
Forklaring af kode
Efter tildeling af prioritet til hver testcase skal du køre ovenstående kode ved hjælp af testNG som vist i Video-2 nævnt nedenfor.
Her kan du se, at testsager prioriteres. Test sag med lavere prioritet udføres først, dvs. nu er der en sekventiel udførelse i henhold til prioritet i test tilfældene. Derfor passerer alle testsager nu.
Bemærk konsol til formørkelse:
Output :
PASSED: openBrowserPASSED: launchGooglePASSED: peformSearchAndClick1stLinkPASSED: FaceBookPageTitleVerification
Nummer 0 har den højeste prioritet (det udføres først), og prioriteten fortsætter baseret på det givne nummer, dvs. 0 har den højeste prioritet end 1. 1 har den højeste prioritet end 2 og så videre.
pakke com.guru.testngannotations;import org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Test (prioritet = 6)offentligt ugyldigt c_method () {System.out.println ("Jeg er i metode C");}@Test (prioritet = 9)offentlig ugyldighed b_method () {System.out.println ("Jeg er i metode B");}@Test (prioritet = 1)offentlig ugyldighed a_method () {System.out.println ("Jeg er i metode A");}@Test (prioritet = 0)offentlig ugyldig e_metode () {System.out.println ("Jeg er i metode E");}@Test (prioritet = 3)offentligt ugyldigt d_metode () {System.out.println ("Jeg er i metode D");}}
Produktion
Jeg er i metode EJeg er i metode AJeg er i metode DJeg er i metode CJeg er i metode B
Her har vi angivet prioriteterne som 0,1,3,6,9. Så metode, der har 0 som prioritet, udføres først og derefter metode, der har prioritet-1 og så videre. Her vil alfabetisk rækkefølge metode navn ikke blive taget i betragtning, da vi har givet prioriteterne
Metoder med samme prioritet:
Der kan være en chance for, at metoder kan have samme prioritet. I disse tilfælde overvejer testng den alfabetiske rækkefølge af metodens navne, hvis prioritet er den samme.
pakke com.guru.testngannotations;import org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Test (prioritet = 6)offentligt ugyldigt c_method () {System.out.println ("Jeg er i metode C");}@Test (prioritet = 9)offentlig ugyldighed b_method () {System.out.println ("Jeg er i metode B");}@Test (prioritet = 6)offentlig ugyldighed a_method () {System.out.println ("Jeg er i metode A");}@Test (prioritet = 0)offentlig ugyldig e_metode () {System.out.println ("Jeg er i metode E");}@Test (prioritet = 3)offentligt ugyldigt d_metode () {System.out.println ("Jeg er i metode D");}}
Produktion
Jeg er i metode EJeg er i metode DJeg er i metode AJeg er i metode CJeg er i metode B
Her udføres 'e' og 'd' baseret på deres prioritetsværdier. Men metoderne 'a' og 'c' indeholder den samme prioritetsværdi (6). Så her overvejer testng den alfabetiske rækkefølge af 'a' og 'c' og udfører dem i overensstemmelse hermed.
Kombination af både prioriterede (med samme prioritet) og ikke-prioriterede metoder:
I dette tilfælde dækker vi to sager i en testng-klasse.
- Metoder med samme prioritetsværdi.
- Mere end én ikke-prioriteret metode.
pakke com.guru.testngannotations;import org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Prøve()offentligt ugyldigt c_method () {System.out.println ("Jeg er i metode C");}@Prøve()offentlig ugyldighed b_method () {System.out.println ("Jeg er i metode B");}@Test (prioritet = 6)offentlig ugyldighed a_method () {System.out.println ("Jeg er i metode A");}@Test (prioritet = 0)offentlig ugyldig e_metode () {System.out.println ("Jeg er i metode E");}@Test (prioritet = 6)offentligt ugyldigt d_metode () {System.out.println ("Jeg er i metode D");}}
Produktion:
Jeg er i metode BJeg er i metode CJeg er i metode EJeg er i metode AJeg er i metode D
FORBYGGET: b_metodePASSED: c_metodePASSED: e_metodePASSED: en_metodePASSED: d_metode
Forklaring:
Første præference: Ikke-prioriterede metoder: 'c' og 'b': Baseret på alfabetisk rækkefølge blev 'b' først udført og derefter 'c'.
Anden præference: Prioriterede metoder: 'a', 'e' og 'd': 'e' blev udført først, da den havde højeste prioritet (0). Da prioriteten for 'a' og 'd' metoder var de samme, betragtede testng den alfabetiske rækkefølge af deres metodenavne. Så mellem dem blev 'a' udført først og derefter 'd'.
Skift mellem store og små bogstaver i TestNG
Bare for din information er der en standardsyntaks til at definere prioritet i testNG dvs. @Test (prioritet = 4) , antag at du definerer den i en anden syntaks, siger @Test (PRIORITY = 1), så viser din IDE det som en kompileringsfejl . Se billedet nedenfor:
Konklusion:
Som du har set, at hvis der er et krav om at køre et sæt test-case i specifik rækkefølge, kan det let gøres ved hjælp af Priority ved hjælp af testNG som et kørselsværktøj.
Denne tutorial er mulig på grund af bidrag fra Ramandeep Singh og Rama Krishna Gadde