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

