TestNG @Test Priority in Selenium

Kazalo:

Anonim

TestNG je preskusno ogrodje, ki zajema različne vrste preskusnih modelov, kot so preskus enot, funkcionalni test, preskus od konca do konca, test uporabniškega vmesnika in test integracije.

V kodi Testng lahko zaženete en ali več testnih primerov.

Če med izvajanjem več testnih primerov prioriteta testa ni definirana, TestNG dodeli vsem @Test prednost kot nič (0).

Zdaj, med tekom; najprej bodo razporejene nižje prioritete.

V tej vadnici boste izvedeli -

  • Predstavitev kode TestNG brez prioritete
  • Predstavitev kode TestNG brez prioritete po abecednem vrstnem redu
  • Kako nastaviti prednost v TestNG
  • Metode z enako prednostjo
  • Združevanje prioritetnih (z enako prednostjo) in neprioritetnih metod

Predstavitev kode TestNG brez prioritete

Vzemimo scenarij, kjer bo za uspešno izvedbo vseh testnih primerov potrebno zaporedje:

Scenarij: ustvarite kodo, kjer morate za iskanje v Googlu izvesti določeno ključno besedo, recimo "Facebook" Zdaj preverite, ali je naslov brskalnika spremenjen v "Facebook - Iskanje Google".

Opomba: Vsak korak, ki ga kodirate, mora biti ločen

1. način : Odprite brskalnik, recimo Firefox (openBrowser ())

2. način : zaženite Google.com (launchGoogle ())

3. način : Izvedite iskanje s pomočjo »Facebook« (performSearchAndClick1stLink ())

4. način : Preverite naslov Googlove strani za iskanje (FaceBookPageTitleVerification ())

Koda 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;javni razred Priority_In_testNG {Gonilnik WebDriver;// 1. način: Odprite Brower recimo Firefox@Testjavna praznina openBrowser () {voznik = novi FirefoxDriver ();}// 2. način: Zaženite Google.com@Testjavni void launchGoogle () {driver.get ("http://www.google.co.in");}// 3. način: Izvedite iskanje z uporabo "Facebook"@Testjavna void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Iskanje']")). sendKeys ("Facebook");}// 4. način: Preverite naslov Googlove strani za iskanje.@Testpublic void FaceBookPageTitleVerification () vrže izjemo {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Navoj.spanje (3000);Assert.assertEquals (driver.getTitle (). Vsebuje ("Facebook - Iskanje Google"), resnično);}}

Pojasnilo kode

Kot smo že omenili, smo ustvarili 4 testne primere za izvajanje vsakega dejanja na neodvisne metode.

  • Prva metoda (openBrowser) navaja inicializacijo brskalnika Firefox.
  • Druga metoda (launchGoogle) navaja, da je zagon Google.com v inicializiranem brskalniku.
  • Tretja metoda (peformSeachAndClick1stLink) navaja, da izvede iskanje v iskalnem polju (z xpath (".//*[@title='Search ']") z iskalnim izrazom kot Facebook in
  • Četrta in zadnja metoda (FaceBookPageTitleVerification) navaja, da kliknete Googlovo ikono za iskanje in preverite, ali je naslov brskalnika spremenjen v Facebook - Google Search.

Zdaj zaženite to kodo s testNG, kot je prikazano v videoposnetku, ugotovili boste, da vsi testni primeri ne uspejo. Razlog za neuspeh: ker obstaja odvisnost od preteklega testnega primera, bo sprejet le trenutni tekoči testni primer.

V tem primeru,

  • Prva metoda, ki se izvede, je openBrowser (). Preteklo je, ker nima nobene odvisnosti.
  • Druga izvedena metoda je FaceBookPageTitleVerification (); ne uspe, ker poskušamo klikniti gumb za iskanje in preveriti naslov brskalnika.
  • Vidite lahko, da če iskalna dejavnost ni obdelana, kako se lahko opravi kateri koli drug korak. Zato so moji testni primeri neuspešni.
MENJENO: openBrowserFAILED: FaceBookPageTitleVerificationFAILE: launchGoogleFAILED: peformSeachAndClick1stLink

Predstavitev kode TestNG brez prioritete po abecednem vrstnem redu

Če ne omenimo nobene prioritete, bo testng izvedel metode @Test, ki temeljijo na abecednem vrstnem redu imen njihovih metod, ne glede na kraj njihove izvedbe v kodi.

paket com.guru.testngannotations;import org.testng.annotations.Test;javni razred TestNG_Priority_Annotations {@Testjavna void c_method () {System.out.println ("Sem v metodi C");}@Testjavna void b_method () {System.out.println ("Sem v metodi B");}@Testjavna praznina a_method () {System.out.println ("Sem v metodi A");}@Testjavna void e_method () {System.out.println ("Sem v metodi E");}@Testjavna void d_method () {System.out.println ("Sem v metodi D");}}

Izhod

Sem v metodi ASem v metodi BSem v metodi CSem v metodi DSem v metodi E

Čeprav smo metode opredelili naključno (c, b, a, e, d), je testng metode izvedel na podlagi njihovih imen z upoštevanjem abecednega vrstnega reda, kar se je odražalo tudi v rezultatih.

Kako nastaviti prednost v TestNG

Kot ste videli v prejšnjem primeru, da je bilo zaporedje potrebno za prehod tega scenarija, bomo prejšnji del kode spremenili s prednostnim parametrom, tako da bi se moral vsak test izvajati proti prednostni nalogi, ki jim je bila dodeljena.

Kot lahko vidite, smo vsakemu testnemu primeru dodelili prednost, kar pomeni, da bo testni primer najprej izveden z nižjo prioriteto.

Prednost pri preizkusu NG v 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;javni razred Priority_In_testNG {Gonilnik WebDriver;// 1. način: Odprite brskalnik, recimo Firefox@Test (prioriteta = 1)javna praznina openBrowser () {voznik = novi FirefoxDriver ();}// 2. način: Zaženite Google.com@Test (prednost = 2)javni void launchGoogle () {driver.get ("http://www.google.co.in");}// 3. način: Izvedite iskanje z uporabo "Facebook"@Test (prednost = 3)javna void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Iskanje']")). sendKeys ("Facebook");}// 4. način: Preverite naslov Googlove strani za iskanje.@Test (prednost = 4)public void FaceBookPageTitleVerification () vrže izjemo {driver.findElement (By.xpath (".//*[@ value = 'Search']")). click ();Navoj.spanje (3000);Assert.assertEquals (driver.getTitle (). Vsebuje ("Facebook - Iskanje Google"), resnično);}} 

Pojasnilo kode

Po dodelitvi prednosti posameznim testnim primerom zaženite zgornjo kodo z uporabo testNG, kot je prikazano v video-2, omenjenem spodaj.

Tu lahko vidite, da imajo testni primeri prednost. Najprej se izvedejo testni primeri z nižjo prioriteto, tj. Zdaj se v testnih primerih izvaja zaporedno izvajanje glede na prednost. Zato vsi testni primeri zdaj potekajo.

Upoštevajte konzolo mrka:

Izhod :

MENJENO: openBrowserMENJENO: zaženite GoogleMENJENO: peformSearchAndClick1stLinkMENJENO: FaceBookPageTitleVerification

Številka 0 ima najvišjo prioriteto (najprej se bo izvedla), prednost pa temelji na dani številki, tj. 0 ima največjo prednost kot 1. 1 ima največjo prednost kot 2 itd.

paket com.guru.testngannotations;import org.testng.annotations.Test;javni razred TestNG_Priority_Annotations {@Test (prednost = 6)javna void c_method () {System.out.println ("Sem v metodi C");}@Test (prednost = 9)javna void b_method () {System.out.println ("Sem v metodi B");}@Test (prioriteta = 1)javna praznina a_method () {System.out.println ("Sem v metodi A");}@Test (prioriteta = 0)javna void e_method () {System.out.println ("Sem v metodi E");}@Test (prednost = 3)javna void d_method () {System.out.println ("Sem v metodi D");}}

Izhod

Sem v metodi ESem v metodi ASem v metodi DSem v metodi CSem v metodi B 

Tu smo podali prednostne naloge 0,1,3,6,9. Torej, najprej se izvede metoda, ki ima prednost 0, nato metoda s prednostjo 1 in tako naprej. Tu se ime metode abecednega vrstnega reda ne bo upoštevalo, saj smo navedli prednostne naloge

Metode z enako prednostjo:

Obstaja možnost, da imajo metode enako prednost. V teh primerih testng upošteva abecedni vrstni red imen metod, katerih prednost je enaka.

paket com.guru.testngannotations;import org.testng.annotations.Test;javni razred TestNG_Priority_Annotations {@Test (prednost = 6)javna void c_method () {System.out.println ("Sem v metodi C");}@Test (prednost = 9)javna void b_method () {System.out.println ("Sem v metodi B");}@Test (prednost = 6)javna praznina a_method () {System.out.println ("Sem v metodi A");}@Test (prioriteta = 0)javna void e_method () {System.out.println ("Sem v metodi E");}@Test (prednost = 3)javna void d_method () {System.out.println ("Sem v metodi D");}}

Izhod

Sem v metodi ESem v metodi DSem v metodi ASem v metodi CSem v metodi B

Tu se 'e' in 'd' izvedeta glede na njihove prednostne vrednosti. Toda metodi 'a' in 'c' vsebujeta enako prednostno vrednost (6). Torej, tukaj testng upošteva abecedni vrstni red 'a' in 'c' in ju ustrezno izvede.

Združevanje tako prednostnih (z enako prednostjo) kot tudi neprioritetnih metod:

V tem primeru bomo obravnavali dva primera v enem testng razredu.

  1. Metode z enako prednostno vrednostjo.
  2. Več metod, ki niso prednostne.
paket com.guru.testngannotations;import org.testng.annotations.Test;javni razred TestNG_Priority_Annotations {@Test ()javna void c_method () {System.out.println ("Sem v metodi C");}@Test ()javna void b_method () {System.out.println ("Sem v metodi B");}@Test (prednost = 6)javna praznina a_method () {System.out.println ("Sem v metodi A");}@Test (prioriteta = 0)javna void e_method () {System.out.println ("Sem v metodi E");}@Test (prednost = 6)javna void d_method () {System.out.println ("Sem v metodi D");}}

Izhod:

Sem v metodi BSem v metodi CSem v metodi ESem v metodi ASem v metodi D 
MENJENO: b_metodaMENJENO: c_metodaMENJENO: e_metodaMENJENO: a_metodaMENJENO: d_method

Pojasnilo:

Prva prednost: Metodi brez prednosti: 'c' in 'b': Na podlagi abecednega vrstnega reda je bil najprej izveden 'b' in nato 'c'.

Druga prednost: prednostne metode: 'a', 'e' in 'd': 'e' je bila izvedena najprej, saj je imela najvišjo prioriteto (0). Ker sta bili prednostni metodi 'a' in 'd' enaki, je testng upošteval abecedni vrstni red imen metod. Torej je bil med njimi najprej izveden 'a' in nato 'd'.

V programu TestNG je med velikimi in malimi črkami

Samo za vašo informacijo obstaja standardna sintaksa za določanje prioritete v testNG, tj. @Test (prioritet = 4) , domnevamo , da jo definirate v neki drugi sintaksi, recimo @Test (PRIORITY = 1), potem jo bo vaš IDE prikazal kot napako pri sestavljanju . Glejte spodnjo sliko:

Zaključek:

Kot ste videli, če obstaja potreba po zagonu nabora testnih primerov v določenem zaporedju, je to mogoče enostavno narediti z uporabo programa Priority z uporabo testNG kot orodja za zagon.

Ta vadnica je omogočena zaradi prispevkov Ramandeepa Singha in Rame Krišne Gadde