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.
- 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