TestNG @Prioritate de testare în Selenium

TestNG este Testarea cadru, care acoperă diferite tipuri de design de testare, cum ar fi un test unitar, un test funcțional, un test de la capăt la capăt, un test de interfață de utilizator și un test de integrare.

Puteți rula unul sau mai multe cazuri de testare în dvs Testng cod.

Dacă prioritatea testului nu este definită în timp ce rulează mai multe cazuri de testare, TestNG atribuie tuturor @Test o prioritate zero(0).

Acum, în timp ce alergați; prioritățile inferioare vor fi programate mai întâi.

Demo de TestNG cod fără Prioritate

Să luăm un scenariu în care va fi necesară secvențierea pentru a trece toate cazurile de testare:

Scenariu: Generați un cod în care vi se cere să efectuați o căutare pe Google cu un anumit cuvânt cheie, cum ar fi „Facebook”. Acum, verificați dacă titlul browserului este schimbat în „Facebook – Căutare Google”.

Notă: Fiecare pas pe care îl codificați ar trebui să fie în metode separate

Metoda 1: Deschide Browser spune Firefox (openBrowser())

Metoda 2: Lansați Google.com (lansați Google())

Metoda 3: Efectuați o căutare folosind „Facebook” (performSearchAndClick1stLink())

Metoda 4: Verificați titlul paginii de căutare Google (FaceBookPageTitleVerification())

Cod pentru scenariul nostru:

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);				
	    }		
	}		

Explicația Codului

După cum am menționat mai sus, am creat 4 cazuri de testare pentru efectuarea fiecărei acțiuni în metode independente.

  • Prima metodă (openBrowser) stări de inițializare Firefox browser-ul.
  • A doua metodă (lansează Google) afirmă că lansarea Google.com este în browserul inițializat.
  • A treia metodă (efectuațiSeachAndClick1stLink)state care efectuează o căutare în caseta de căutare (cu xpath (".//*[@title='Căutare']”) cu un termen de căutare ca Facebook și
  • A patra și ultima metodă (FaceBookPageTitleVerification) afirmă că faceți clic pe pictograma de căutare Google și verifică dacă titlul browserului a fost schimbat în Facebook – Căutare Google.

Acum rulați acest cod folosind testNG, așa cum se arată în videoclip, veți găsi toate Caz de testare eșuează. Motivul eșecului: deoarece există o dependență de cazul de testare anterior care trebuie trecut, va fi trecut doar cazul de testare care rulează curent.

În acest caz,

  • Prima metodă care se execută este openBrowser(). A fost trecut pentru că nu are nicio dependență.
  • A doua metodă executată este FaceBookPageTitleVerification(); nu reușește deoarece încercăm să facem clic pe butonul de căutare și să verificăm titlul browserului.
  • Puteți vedea că, dacă activitatea de căutare nu este procesată, atunci cum poate fi trecut orice alt pas. Prin urmare, acesta este motivul pentru care cazurile mele de testare eșuează.
PASSED: openBrowser
FAILED: FaceBookPageTitleVerification
FAILED: launchGoogle
FAILED: peformSeachAndClick1stLink

Demo de TestNG cod fără Prioritate în ordine alfabetică

Dacă nu menționăm nicio prioritate, testng va executa metodele @Test în funcție de ordinea alfabetică a numelor metodelor, indiferent de locul lor de implementare în cod.

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");
}

}

producție

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 

Deși am definit metodele într-o manieră aleatorie (c, b, a, e, d), testng a executat metodele pe baza numelor lor de metode, luând în considerare ordinea alfabetică și același lucru sa reflectat și în rezultat.

Cum să setați Prioritatea în TestNG

După cum ați văzut în exemplul anterior, acea secvențiere a fost necesară pentru a trece acest scenariu, așa că vom modifica piesa anterioară de cod cu Parametru prioritar astfel încât fiecare test să se opună priorității care le este atribuită.

Acum, după cum puteți vedea, am atribuit Prioritatea fiecărui caz de testare înseamnă că cazul de testare va fi executată mai întâi valoarea de prioritate inferioară.

Prioritate în testNG în acțiune

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);				
    }		
}

Explicația Codului

După atribuirea priorității fiecărui caz de testare, rulați codul de mai sus folosind testNG, așa cum se arată în Video-2 menționat mai jos.

Aici, puteți vedea că cazurile de testare sunt prioritizate. Cazurile de testare cu prioritate mai mică sunt executate mai întâi, adică acum există o execuție secvențială în funcție de prioritate în cazurile de testare. Prin urmare, toate cazurile de testare trec acum.

Observați consola eclipsei:

producție :

PASSED: openBrowser
PASSED: launchGoogle
PASSED: peformSearchAndClick1stLink
PASSED: FaceBookPageTitleVerification

Numărul 0 are cea mai mare prioritate (va fi executat primul) și prioritatea continuă pe baza numărului dat, adică 0 are cea mai mare prioritate decât 1. 1 are cea mai mare prioritate decât 2 și așa mai departe.

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");
    }

}

producție

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

Aici am furnizat prioritățile ca 0,1,3,6,9. Deci, metoda având 0 ca prioritate este executată mai întâi și apoi metoda având prioritate-1 și așa mai departe. Aici, numele metodei de ordine alfabetică nu va fi luat în considerare deoarece am furnizat prioritățile

Metode cu aceeași prioritate

Poate exista șansa ca metodele să aibă aceeași prioritate. În aceste cazuri, testng ia în considerare ordinea alfabetică a numelor metodelor a căror prioritate este aceeași.

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");
    }

}

producție

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 

Aici „e” și „d” sunt executate pe baza valorilor lor de prioritate. Dar metodele „a” și „c” conțin aceeași valoare de prioritate (6). Deci, aici testng ia în considerare ordinea alfabetică a „a” și „c” și le execută în consecință.

Combinând atât metodele prioritizate (având aceeași prioritate) cât și cele neprioritate

În acest caz, vom acoperi două cazuri într-o clasă de testare.

  1. Metode având aceeași valoare de prioritate.
  2. Mai multe metode fără prioritate.
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");
	}
}

ieșire:

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

Explicaţie:

Prima preferință: Metode fără prioritate: „c” și „b”: pe baza ordinii alfabetice, „b” a fost executat mai întâi și apoi „c”.

A doua preferință: Metode prioritizate: „a”, „e” și „d”: „e” a fost executat mai întâi deoarece avea cea mai mare prioritate (0). Deoarece prioritatea metodelor „a” și „d” era aceeași, testng a luat în considerare ordinea alfabetică a numelor metodelor lor. Așadar, între ele, a fost executat mai întâi „a” și apoi „d”.

Sens la majuscule în TestNG

Doar pentru informarea dumneavoastră, există o sintaxă standard pentru definirea priorității în testNG, adică @Test (prioritate=4), să presupunem că îl definiți într-o altă sintaxă, să spunem @Test (PRIORITATE=1) atunci IDE-ul tău îl va afișa ca o eroare de compilare. Consultați imaginea de mai jos:

Sens la majuscule în TestNG

Concluzie

După cum ați văzut, dacă există o cerință de a rula un set de cazuri de testare într-o anumită secvență, atunci se poate face cu ușurință folosind Prioritate folosind testNG ca instrument de rulare.

Acest tutorial este posibil datorită contribuțiilor lui Ramandeep Singh și Rama Krishna Gadde

Rezumați această postare cu: