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: Generálj egy kódot, ahol végre kell hajtanod a következőt: Google keress rá egy adott kulcsszóra, például a „Facebook”-ra. Most ellenőrizd, hogy a böngésző címsora „Facebook –”-ra változott-e. Google Keresés".
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ítás Google.com (indításGoogle()
Módszer 3: Végezzen keresést a „Facebook” használatával (performSearchAndClick1stLink())
Módszer 4Ellenőrzés Google keresőoldal címe (FaceBookPageTitleVerification())
Code 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);
}
}
Magyarázat Code
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 (dobGoogle) államok, amelyek elindítják GoogleA .com 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) államok, amelyek a keresés ikonjára kattintanak Google és ellenőrizze, hogy a böngésző címsora megváltozott-e erre: Facebook - Google Keresés.
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);
}
}
Magyarázat Code
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.
- Azonos prioritási értékkel rendelkező módszerek.
- 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:
Ö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

