TestNG @ Test Priority in Selenium

Innholdsfortegnelse:

Anonim

TestNG er et testrammeverk som dekker forskjellige typer testdesign som en enhetstest, funksjonstest, slutt til slutt-test, UI-test og integrasjonstest.

Du kan kjøre en eller flere testtilfeller i Testng-koden din.

Hvis testprioritet ikke er definert mens du kjører flere testtilfeller, tildeler TestNG alle @Test en prioritet som null (0).

Nå mens du løper; lavere prioriteringer vil bli planlagt først.

I denne opplæringen lærer du -

  • Demo av TestNG-kode uten prioritet
  • Demo av TestNG-kode uten prioritet i alfabetisk rekkefølge
  • Hvordan sette prioritet i TestNG
  • Metoder med samme prioritet
  • Kombinere både prioriterte (med samme prioritet) og ikke-prioriterte metoder

Demo av TestNG-kode uten prioritet

La oss ta et scenario der det kreves sekvensering for å bestå alle testtilfeller:

Scenario: Generer en kode der du er pålagt å utføre et Google-søk med et spesifikt nøkkelord si "Facebook". Bekreft nå at nettlesertittelen er endret til "Facebook - Google Search".

Merk: Hvert trinn du koder, skal være i separate metoder

Metode 1 : Åpne nettleser si Firefox (openBrowser ())

Metode 2 : Start Google.com (launchGoogle ())

Metode 3 : Utfør et søk ved hjelp av "Facebook" (performSearchAndClick1stLink ())

Metode 4 : Bekreft tittelen på Google-søkesiden (FaceBookPageTitleVerification ())

Kode for vårt scenario :

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.Assert;importer org.testng.annotations.Test;offentlig klasse Priority_In_testNG {WebDriver driver;// Metode 1: Åpne Brower si Firefox@Testoffentlig ugyldig openBrowser () {driver = ny FirefoxDriver ();}// Metode 2: Start Google.com@Testoffentlig ugyldig lanseringGoogle () {driver.get ("http://www.google.co.in");}// Metode 3: Utfør et søk ved hjelp av "Facebook"@Testoffentlig ugyldig peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//* ** @ title = 'Søk']")). sendKeys ("Facebook");}// Metode 4: Bekreft tittelen på Googles søkeside.@Testoffentlig ugyldig FaceBookPageTitleVerification () kaster unntak {driver.findElement (By.xpath (".//* ** @ value = 'Søk']")). klikk ();Tråd. Søvn (3000);Assert.assertEquals (driver.getTitle (). Inneholder ("Facebook - Google Søk"), sant);}}

Forklaring av kode

Som nevnt ovenfor har vi laget 4 testsaker for å utføre hver handling i uavhengige metoder.

  • Den første metoden (openBrowser) sier å initialisere Firefox-nettleseren.
  • Den andre metoden (launchGoogle) sier at lanseringen av Google.com er i den initialiserte nettleseren.
  • Den tredje metoden (peformSeachAndClick1stLink) sier at du utfører et søk i søkefeltet (med xpath (".//*[@title='Search ']") med et søkeord som Facebook og
  • Den fjerde og siste metoden (FaceBookPageTitleVerification) sier at du klikker på søkeikonet til Google og bekrefter at nettlesertittelen er endret til Facebook - Google Søk.

Kjør nå denne koden ved hjelp av testNG som vist i videoen. Du vil finne at alle testsakene feiler. Årsaken til svikt: ettersom det er en avhengighet av tidligere testsak for å bestå, vil bare den nåværende kjørende testsaken bli bestått.

I dette tilfellet,

  • Den første metoden som utføres er openBrowser (). Den ble bestått fordi den ikke har noen avhengighet.
  • Andre utførte metode er FaceBookPageTitleVerification (); det mislykkes fordi vi prøver å klikke søkeknappen og bekrefte nettlesertittelen.
  • Du kan se at hvis søkeaktivitet ikke er i prosess, hvordan et hvilket som helst annet trinn kan bestå. Derfor er dette grunnen til at testsakene mine mislykkes.
PASSERT: openBrowserMISLYKT: FaceBookPageTitleVerificationMISLYKKET: launchGoogleMISLYKT: peformSeachAndClick1stLink

Demo av TestNG-kode uten prioritet i alfabetisk rekkefølge

Hvis vi ikke nevner noen prioritet, vil testng utføre @Test-metodene basert på alfabetisk rekkefølge av metodenavnene sine, uavhengig av hvor de implementeres i koden.

pakke com.guru.testngannotations;importer org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Testoffentlig tomrom c_method () {System.out.println ("Jeg er i metode C");}@Testoffentlig ugyldig b_metode () {System.out.println ("Jeg er i metode B");}@Testoffentlig ugyldig a_metode () {System.out.println ("Jeg er i metode A");}@Testoffentlig ugyldig e_metode () {System.out.println ("Jeg er i metode E");}@Testoffentlig ugyldig d_metode () {System.out.println ("Jeg er i metode D");}}

Produksjon

Jeg er i metode A.Jeg er i metode BJeg er i metode CJeg er i metode DJeg er i metode E.

Selv om vi definerte metodene på en tilfeldig måte (c, b, a, e, d), utførte testng metodene basert på metodenavnene sine ved å ta i betraktning alfabetisk rekkefølge, og det samme gjenspeiles også i utdataene.

Hvordan sette prioritet i TestNG

Som du har sett i forrige eksempel at sekvensering kreves for å passere dette scenariet, så vil vi endre den forrige koden med Priority Parameter slik at hver test skal kjøre mot den prioriteten som er tildelt dem.

Nå som du kan se, har vi tilordnet Prioritet til hver testtilfelle betyr at testtilfelle vil lavere prioritetsverdi bli utført først.

Prioritet i testNG i aksjon

importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.Assert;importer org.testng.annotations.Test;offentlig klasse Priority_In_testNG {WebDriver driver;// Metode 1: Åpne nettleser si Firefox@Test (prioritet = 1)offentlig ugyldig openBrowser () {driver = ny FirefoxDriver ();}// Metode 2: Start Google.com@Test (prioritet = 2)offentlig ugyldig lanseringGoogle () {driver.get ("http://www.google.co.in");}// Metode 3: Utfør et søk ved hjelp av "Facebook"@Test (prioritet = 3)offentlig ugyldig peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//* ** @ title = 'Søk']")). sendKeys ("Facebook");}// Metode 4: Bekreft tittelen på Googles søkeside.@Test (prioritet = 4)offentlig ugyldig FaceBookPageTitleVerification () kaster unntak {driver.findElement (By.xpath (".//* ** @ value = 'Søk']")). klikk ();Tråd. Søvn (3000);Assert.assertEquals (driver.getTitle (). Inneholder ("Facebook - Google Søk"), sant);}} 

Forklaring av kode

Etter å ha tildelt prioritet til hver testkasse, kjører du koden ovenfor ved hjelp av testNG som vist i Video-2 nevnt nedenfor.

Her kan du se at testsaker prioriteres. Testtilfelle med lavere prioritet utføres først, dvs. nå er det en sekvensiell utførelse i henhold til prioritet i testsakene. Derfor passerer alle test tilfeller nå.

Legg merke til konsoll for formørkelse:

Utgang :

PASSERT: openBrowserPASSERT: launchGooglePASSERT: peformSearchAndClick1stLinkPASSERT: FaceBookPageTitleVerification

Nummer 0 har høyest prioritet (det blir utført først) og prioritet fortsetter basert på det angitte tallet, dvs. 0 har høyest prioritet enn 1. 1 har høyest prioritet enn 2 og så videre.

pakke com.guru.testngannotations;importer org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Test (prioritet = 6)offentlig tomrom c_method () {System.out.println ("Jeg er i metode C");}@Test (prioritet = 9)offentlig ugyldig b_metode () {System.out.println ("Jeg er i metode B");}@Test (prioritet = 1)offentlig ugyldig a_metode () {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)offentlig ugyldig d_metode () {System.out.println ("Jeg er i metode D");}}

Produksjon

Jeg er i metode E.Jeg er i metode A.Jeg er i metode DJeg er i metode CJeg er i metode B 

Her har vi gitt prioriteringene som 0,1,3,6,9. Så, metode som har 0 som prioritet utføres først og deretter metode som har prioritet-1 og så videre. Her blir ikke navnet på alfabetisk rekkefølge behandlet som vi prioriterte

Metoder med samme prioritet:

Det kan være en sjanse for at metoder kan ha samme prioritet. I slike tilfeller vurderer testng den alfabetiske rekkefølgen på metodenavnene som har samme prioritet.

pakke com.guru.testngannotations;importer org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Test (prioritet = 6)offentlig tomrom c_method () {System.out.println ("Jeg er i metode C");}@Test (prioritet = 9)offentlig ugyldig b_metode () {System.out.println ("Jeg er i metode B");}@Test (prioritet = 6)offentlig ugyldig a_metode () {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)offentlig ugyldig d_metode () {System.out.println ("Jeg er i metode D");}}

Produksjon

Jeg er i metode E.Jeg er i metode DJeg er i metode A.Jeg er i metode CJeg er i metode B

Her utføres 'e' og 'd' basert på prioritetsverdiene. Men metodene 'a' og 'c' inneholder samme prioritetsverdi (6). Så, her vurderer testng den alfabetiske rekkefølgen på 'a' og 'c' og utfører dem deretter.

Kombinere både prioriterte (med samme prioritet) og ikke-prioriterte metoder:

I dette tilfellet dekker vi to saker i en testng-klasse.

  1. Metoder med samme prioritetsverdi.
  2. Mer enn én ikke-prioriterte metoder.
pakke com.guru.testngannotations;importer org.testng.annotations.Test;offentlig klasse TestNG_Priority_Annotations {@Test()offentlig tomrom c_method () {System.out.println ("Jeg er i metode C");}@Test()offentlig ugyldig b_metode () {System.out.println ("Jeg er i metode B");}@Test (prioritet = 6)offentlig ugyldig a_metode () {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)offentlig ugyldig d_metode () {System.out.println ("Jeg er i metode D");}}

Produksjon:

Jeg er i metode BJeg er i metode CJeg er i metode E.Jeg er i metode A.Jeg er i metode D 
GÅTT: b_metodeGÅTT: c_metodeGÅTT: e_metodeGÅTT: en_metodeGÅTT: d_metode

Forklaring:

Første preferanse: Ikke-prioriterte metoder: 'c' og 'b': Basert på alfabetisk rekkefølge ble 'b' utført først og deretter 'c'.

Andre preferanse: Prioriterte metoder: 'a', 'e' og 'd': 'e' ble utført først da den hadde høyeste prioritet (0). Siden prioriteten til 'a' og 'd' metodene var den samme, vurderte testng den alfabetiske rekkefølgen på metodenavnene. Så mellom dem ble 'a' utført først og deretter 'd'.

Skift mellom store og små bokstaver i TestNG

Bare for din informasjon er det en standard syntaks for å definere prioritet i testNG dvs. @Test (prioritet = 4) , antar at du definerer den i en annen syntaks si @Test (PRIORITY = 1), så vil IDE din vise det som en kompileringsfeil . Se bildet nedenfor:

Konklusjon:

Som du har sett at hvis det er krav om å kjøre et sett med test-case i spesifikk rekkefølge, kan det enkelt gjøres ved å bruke Priority ved å bruke testNG som et kjøreverktøy.

Denne opplæringen er mulig på grunn av bidrag fra Ramandeep Singh og Rama Krishna Gadde