TestNG @Test Prioritet u Selenium
TestNG je Ispitivanje okvir koji pokriva razliฤite vrste testnih dizajna kao ลกto su jediniฤni test, funkcionalni test, end-to-end test, UI test i integracijski test.
Moลพete pokrenuti jedan ili viลกe testnih sluฤajeva u svom Testng kodirati.
Ako prioritet testa nije definiran tijekom izvoฤenja viลกe testnih sluฤajeva, TestNG dodjeljuje svim @Test prioritet kao nula(0).
Sada, dok trฤite; niลพi prioriteti bit ฤe prvi rasporeฤeni.
Demo od TestNG kod bez prioriteta
Uzmimo scenarij u kojem ฤe biti potrebno sekvenciranje kako bi se proลกli svi testni sluฤajevi:
Scenarij: Generirajte kod gdje je potrebno izvrลกiti Google pretraลพite odreฤenom kljuฤnom rijeฤi, recimo โFacebookโ. Sada provjerite je li naslov preglednika promijenjen u โFacebook โ Google Pretraลพivanje".
Napomena: Svaki korak koji kodirate trebao bi biti u zasebnim metodama
Metoda 1: Otvorite preglednik recimo Firefox (openBrowser())
Metoda 2Pokreni Google.com (pokretanjeGoogle())
Metoda 3: Izvrลกite pretraลพivanje koristeฤi โFacebookโ (performSearchAndClick1stLink())
Metoda 4Potvrdi Google naslov stranice za pretraลพivanje (FaceBookPageTitleVerification())
Code za naลก scenarij:
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;
public class Priority_In_testNG {
WebDriver driver;
// Method 1: Open Brower say Firefox
@Test
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
Objaลกnjenje Code
Kao ลกto je gore spomenuto, stvorili smo 4 testna sluฤaja za izvoฤenje svake radnje u neovisnim metodama.
- Prva metoda (otvoreni preglednik) stanja za inicijalizaciju Firefox preglednik.
- Druga metoda (lansiranjeGoogle) drลพave koje pokreฤu Google.com se nalazi u inicijaliziranom pregledniku.
- Treฤa metoda (peformSeachAndClick1stLink)stanja koja izvode pretraลพivanje u okviru za pretraลพivanje (s xpath (โ.//*[@title='Traลพi']โ) s pojmom za pretraลพivanje kao Facebook i
- ฤetvrta i posljednja metoda (FaceBookPageTitleVerification) drลพave koje kliknu na ikonu za pretraลพivanje Google i provjerite je li naslov preglednika promijenjen u Facebook - Google Traลพi.
Sada pokrenite ovaj kod koristeฤi testNG kao ลกto je prikazano u videu i pronaฤi ฤete sve Testni sluฤaj ne uspijevaju. Razlog neuspjeha: kako postoji ovisnost o prolasku prethodnog testnog sluฤaja, proฤi ฤe se samo trenutni testni sluฤaj.
U ovom sluฤaju,
- Prva metoda koja se izvodi je openBrowser(). Proลกlo ga je jer nema nikakve ovisnosti.
- Druga izvedena metoda je FaceBookPageTitleVerification(); ne uspijeva jer pokuลกavamo kliknuti gumb za pretraลพivanje i provjera naslova preglednika.
- Moลพete vidjeti kako se bilo koji drugi korak moลพe proฤi ako se aktivnost pretraลพivanja ne obraฤuje. Stoga je to razlog zaลกto moji testni sluฤajevi ne uspijevaju.
PASSED: openBrowser FAILED: FaceBookPageTitleVerification FAILED: launchGoogle FAILED: peformSeachAndClick1stLink
Demo od TestNG kod bez prioriteta u abecednom redu
Ako ne spomenemo nikakav prioritet, testng ฤe izvrลกiti metode @Test na temelju abecednog reda njihovih naziva metoda bez obzira na mjesto implementacije u kodu.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test
public void c_method(){
System.out.println("I'm in method C");
}
@Test
public void b_method(){
System.out.println("I'm in method B");
}
@Test
public void a_method(){
System.out.println("I'm in method A");
}
@Test
public void e_method(){
System.out.println("I'm in method E");
}
@Test
public void d_method(){
System.out.println("I'm in method D");
}
}
Izlaz
I'm in method A I'm in method B I'm in method C I'm in method D I'm in method E
Iako smo metode definirali na sluฤajan naฤin (c, b, a, e, d), testng je izvrลกio metode na temelju njihovih naziva metoda uzimajuฤi u obzir abecedni red, a isto se odrazilo i na izlaz.
Kako postaviti Prioritet u TestNG
Kao ลกto ste vidjeli u prethodnom primjeru da je sekvenciranje potrebno da bi se proลกao ovaj scenarij, tako da ฤemo modificirati prethodni dio koda s Parametar prioriteta tako da se svaki test treba izvoditi prema prioritetu koji im je dodijeljen.
Sada, kao ลกto vidite, dodijelili smo Prioritet svakom testu, ลกto znaฤi da ฤe testni sluฤaj s niลพom prioritetnom vrijednoลกฤu biti prvi izvrลกen.
Prioritet u testNG na djelu
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;
public class Priority_In_testNG {
WebDriver driver;
// Method 1: Open Browser say Firefox
@Test (priority=1)
public void openBrowser() {
driver = new FirefoxDriver();
}
// Method 2: Launch Google.com
@Test (priority=2)
public void launchGoogle() {
driver.get("http://www.google.co.in");
}
// Method 3: Perform a search using "Facebook"
@Test (priority=3)
public void peformSeachAndClick1stLink() {
driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook");
}
// Method 4: Verify Google search page title.
@Test (priority=4)
public void FaceBookPageTitleVerification() throws Exception {
driver.findElement(By.xpath(".//*[@value='Search']")).click();
Thread.sleep(3000);
Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true);
}
}
Objaลกnjenje Code
Nakon dodjele prioriteta svakom testu, pokrenite gornji kod koristeฤi testNG kao ลกto je prikazano u Video-2 navedenom u nastavku.
Ovdje moลพete vidjeti da su testni sluฤajevi prioritetni. Testni sluฤajevi niลพeg prioriteta izvrลกavaju se prvi, tj. sada postoji sekvencijalno izvrลกavanje prema prioritetu u testnim sluฤajevima. Dakle, svi testni sluฤajevi sada prolaze.
Obratite paลพnju na konzolu eclipse:
Izlaz :
PASSED: openBrowser PASSED: launchGoogle PASSED: peformSearchAndClick1stLink PASSED: FaceBookPageTitleVerification
Broj 0 ima najveฤi prioritet (prvo ฤe se izvrลกiti), a prioritet se nastavlja na temelju zadanog broja, tj. 0 ima najveฤi prioritet od 1. 1 ima najveฤi prioritet od 2 i tako dalje.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=1)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Izlaz
I'm in method E I'm in method A I'm in method D I'm in method C I'm in method B
Ovdje smo dali prioritete kao 0,1,3,6,9. Dakle, prvo se izvrลกava metoda s prioritetom 0, a zatim metoda s prioritetom 1 i tako dalje. Ovdje se naziv metode abecednim redoslijedom neฤe uzeti u obzir jer smo dali prioritete
Metode s istim prioritetom
Moลพda postoji moguฤnost da metode imaju isti prioritet. U tim sluฤajevima testng uzima u obzir abecedni red naziva metoda ฤiji je prioritet isti.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test(priority=6)
public void c_method(){
System.out.println("I'm in method C");
}
@Test(priority=9)
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=3)
public void d_method(){
System.out.println("I'm in method D");
}
}
Izlaz
I'm in method E I'm in method D I'm in method A I'm in method C I'm in method B
Ovdje se 'e' i 'd' izvrลกavaju na temelju njihovih vrijednosti prioriteta. Ali metode 'a' i 'c' sadrลพe istu vrijednost prioriteta(6). Dakle, ovdje testng uzima u obzir abecedni red 'a' i 'c' i izvrลกava ih u skladu s tim.
Kombinacija prioritetnih (s istim prioritetom) i neprioritetnih metoda
U ovom sluฤaju, pokrit ฤemo dva sluฤaja u jednoj testng klasi.
- Metode imaju istu vrijednost prioriteta.
- Viลกe od jedne metode bez prioriteta.
package com.guru.testngannotations;
import org.testng.annotations.Test;
public class TestNG_Priority_Annotations {
@Test()
public void c_method(){
System.out.println("I'm in method C");
}
@Test()
public void b_method(){
System.out.println("I'm in method B");
}
@Test(priority=6)
public void a_method(){
System.out.println("I'm in method A");
}
@Test(priority=0)
public void e_method(){
System.out.println("I'm in method E");
}
@Test(priority=6)
public void d_method(){
System.out.println("I'm in method D");
}
}
Izlaz:
I'm in method B I'm in method C I'm in method E I'm in method A I'm in method D
PASSED: b_method PASSED: c_method PASSED: e_method PASSED: a_method PASSED: d_method
Objaลกnjenje:
Prva preferencija: Metode bez prioriteta: 'c' i 'b': Na temelju abecednog reda prvo je izvrลกeno 'b', a zatim 'c'.
Druga preferencija: Metode s prioritetom: 'a', 'e' i 'd': 'e' je izvrลกena prva jer je imala najviลกi prioritet (0). Kako je prioritet metoda 'a' i 'd' bio isti, testng je uzeo u obzir abecedni red naziva njihovih metoda. Dakle, izmeฤu njih je prvo izvrลกeno 'a', a zatim 'd'.
Razlikuje velika i mala slova TestNG
Samo za vaลกu informaciju postoji standardna sintaksa za definiranje prioriteta u testNG-u, tj @Test (prioritet=4), pretpostavimo da ga 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, ako postoji zahtjev za izvoฤenjem skupa testnih sluฤajeva u odreฤenom nizu, to se moลพe jednostavno uฤiniti koriลกtenjem Prioritet koristeฤi testNG kao alat za pokretanje.
Ovaj vodiฤ je omoguฤen zahvaljujuฤi doprinosima Ramandeepa Singha i Rame Krishna Gadde

