TestNG @Teszt prioritás be Selenium

TestNG egy olyan Tesztelés keretrendszer, amely különböző típusú tesztterveket fed le, például egységtesztet, funkcionális tesztet, végponttól végpontig végzett tesztet, UI-tesztet és integrációs tesztet.

Egy vagy több tesztesetet futtathat a sajátjában Testng kód.

Ha a tesztprioritás nincs megadva, miközben több tesztesetet futtat, TestNG az összes @Test nulla(0) prioritást rendel hozzá.

Most, futás közben; az alacsonyabb prioritások kerülnek először ütemezésre.

Demo a TestNG kód prioritás nélkül

Vegyünk egy forgatókönyvet, ahol szekvenálásra lesz szükség ahhoz, hogy minden teszteset megfeleljen:

Forgatókönyv: Hozzon létre egy kódot, ahol Google keresést kell végrehajtania egy adott kulcsszóval, mondjuk „Facebook”. Most ellenőrizze, hogy a böngésző címe „Facebook – Google Keresés”-re módosult.

Megjegyzés: Minden kódolt lépésnek külön metódusban kell lennie

Módszer 1: Nyissa meg a böngészőt Firefox (openBrowser())

Módszer 2: Indítsa el a Google.com webhelyet (launchGoogle())

Módszer 3: Végezzen keresést a „Facebook” használatával (performSearchAndClick1stLink())

Módszer 4: Ellenőrizze a Google keresőoldal címét (FaceBookPageTitleVerification())

Kód a mi forgatókönyvünkhöz:

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

A kód magyarázata

Mint fentebb említettük, 4 tesztesetet hoztunk létre az egyes műveletek független metódusokban történő végrehajtásához.

  • Az első módszer (openBrowser) állapotokat inicializálni Firefox böngészőt.
  • A második módszer (indítsa el a Google-t) kijelenti, hogy a Google.com elindítása az inicializált böngészőben található.
  • A harmadik módszer (peformSeachAndClick1stLink)állapotok, amelyek keresést hajtanak végre a keresőmezőben (az xpath (.//*[@title='Keresés']) keresési kifejezéssel mint Facebook és a
  • A negyedik és egyben utolsó módszer (FaceBookPageTitleVerification) kimondja, hogy kattintson a Google keresési ikonjára, és ellenőrizze, hogy a böngésző címe megváltozott-e Facebook – Google kereső.

Most futtassa ezt a kódot a testNG segítségével, ahogy a videóban is látható, megtalálja az összes Teszt eset kudarcot vallanak. A sikertelenség oka: mivel függ a korábbi teszteset sikeres teljesítése, csak az aktuális teszteset lesz sikeres.

Ebben az esetben,

  • Az első végrehajtott módszer a openBrowser(). Átment, mert nincs függősége.
  • A második végrehajtott módszer a FaceBookPageTitleVerification(); ez nem sikerül, mert megpróbálunk rákattintani a keresés gombra, és ellenőrizni a böngésző címét.
  • Láthatja, hogy ha a keresési tevékenység nincs feldolgozva, akkor hogyan lehet bármely más lépést átmenni. Ezért ez az oka annak, hogy teszteseményeim kudarcot vallanak.
PASSED: openBrowser
FAILED: FaceBookPageTitleVerification
FAILED: launchGoogle
FAILED: peformSeachAndClick1stLink

Demo a TestNG kód prioritás nélkül ábécé sorrendben

Ha nem említünk semmiféle prioritást, a testng a @Test metódusokat a metódusneveik ábécé sorrendjében hajtja végre, függetlenül attól, hogy a kódban milyen helyen vannak implementálva.

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

}

teljesítmény

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 

Bár a metódusokat véletlenszerűen definiáltuk (c, b, a, e, d), a testng a metódusokat a metódusnevek alapján, ábécé sorrendet figyelembe véve hajtotta végre, és ez a kimenetben is tükröződött.

Hogyan állítsuk be a prioritást TestNG

Ahogy az előző példában láthatta, hogy a forgatókönyv átadásához szekvenálás szükséges, ezért módosítani fogjuk az előző kódrészletet Prioritás paraméter úgy, hogy minden teszt ellentmondjon a nekik rendelt prioritásnak.

Most, amint láthatja, minden tesztesethez hozzárendeltük a prioritást, ami azt jelenti, hogy a teszteset az alacsonyabb prioritású értéket hajtja végre először.

Prioritás a testNG-ben működés közben

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

A kód magyarázata

Miután minden egyes tesztesethez prioritást adott, futtassa a fenti kódot a testNG használatával, ahogy az alább említett Video-2-ben látható.

Itt láthatja, hogy a tesztesetek prioritást élveznek. Az alacsonyabb prioritású tesztesetek kerülnek először végrehajtásra, azaz most a tesztesetekben prioritás szerinti szekvenciális végrehajtás történik. Ezért most minden teszteset sikeres.

Jegyezze meg az eclipse konzolját:

teljesítmény :

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

A 0-nak van a legmagasabb prioritása (ez kerül végrehajtásra először), és a prioritás az adott szám alapján folytatódik, azaz a 0-nak van a legmagasabb prioritása 1-nél. Az 1-nek a legmagasabb a prioritása a 2-nél és így tovább.

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

}

teljesítmény

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

Itt megadtuk a prioritásokat 0,1,3,6,9-ként. Tehát először a 0 prioritású metódus kerül végrehajtásra, majd az 1-es prioritású metódus és így tovább. A metódus ábécé szerinti sorrendjének neve itt nem lesz figyelembe véve, mivel mi adtuk meg a prioritásokat

Azonos prioritású módszerek

Előfordulhat, hogy a módszerek ugyanazt a prioritást tartalmazzák. Ezekben az esetekben a testng figyelembe veszi az azonos prioritású metódusnevek ábécé sorrendjét.

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

}

teljesítmény

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 

Itt az „e” és „d” a prioritási értékeik alapján kerül végrehajtásra. De az 'a' és 'c' metódusok ugyanazt a prioritási értéket tartalmazzák(6). Tehát itt a testng figyelembe veszi az 'a' és 'c' betűrendjét, és ennek megfelelően hajtja végre őket.

A prioritásos (azonos prioritású) és a nem prioritizált módszerek kombinálása

Ebben az esetben két esetet fedünk le egy tesztelési osztályban.

  1. Azonos prioritási értékkel rendelkező módszerek.
  2. Egynél több nem prioritásos módszer.
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");
	}
}

output:

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

Magyarázat:

Első preferencia: Nem prioritizált metódusok: 'c' és 'b': ABC sorrend alapján először a 'b', majd a 'c' lett végrehajtva.

Második preferencia: Prioritizált metódusok: 'a', 'e' és 'd': az 'e' került először végrehajtásra, mivel ennek volt a legmagasabb prioritása (0). Mivel az 'a' és 'd' metódusok prioritása megegyezett, a tesztelés a metódusnevek ábécé sorrendjét vette figyelembe. Tehát közöttük először az „a”, majd a „d” betűt hajtották végre.

A kis- és nagybetűk megkülönböztetése TestNG

Csak tájékoztatásul van egy szabványos szintaxis a prioritás meghatározásához a testNG-ben, pl @Teszt (prioritás=4), tegyük fel, hogy valamilyen más szintaxisban határozod meg, mondjuk @Teszt (PRIORITY=1) akkor az IDE fordítási hibaként jeleníti meg. Lásd az alábbi képet:

A kis- és nagybetűk megkülönböztetése TestNG

Összegzés

Amint láthatta, ha követelmény egy teszteset meghatározott sorrendben történő futtatása, akkor ez könnyen megtehető a Prioritás a testNG-t futtató eszközként használva.

Ez az oktatóanyag Ramandeep Singh és Rama közreműködésének köszönhető Krishna Gadde