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.

  1. Metode imaju istu vrijednost prioriteta.
  2. 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:

Razlikuje velika i mala slova TestNG

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

Saลพmite ovu objavu uz: