TestNG @Testausprioriteetti sisään Selenium
TestNG on Testaus puitekehys, joka kattaa erityyppiset testimallit, kuten yksikkötestin, toimintatestin, päästä päähän -testin, käyttöliittymätestin ja integraatiotestin.
Voit suorittaa yhden tai useita testitapauksia Testng koodi.
Jos testin prioriteettia ei ole määritetty, kun suoritetaan useita testitapauksia, TestNG määrittää kaikille @Test-prioriteettiksi nolla(0).
Nyt juosten; alemmat prioriteetit ajoitetaan ensin.
Esittely TestNG koodi ilman prioriteettia
Otetaan skenaario, jossa sekvensointi vaaditaan kaikkien testitapausten läpäisemiseksi:
Skenaario: Luo koodi, jossa sinun on tehtävä Google-haku tietyllä avainsanalla, sano "Facebook". Varmista nyt, että selaimen otsikko on muutettu "Facebook - Google Search".
Huomautus: Jokaisen koodattavan vaiheen tulee olla eri menetelmissä
Menetelmä 1: Avaa selain sano Firefox (openBrowser())
Menetelmä 2: Käynnistä Google.com (launchGoogle())
Menetelmä 3: Suorita haku käyttämällä Facebookia (performSearchAndClick1stLink())
Menetelmä 4: Vahvista Google-hakusivun otsikko (FaceBookPageTitleVerification())
Koodi skenaarioimme:
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); } }
Koodin selitys
Kuten edellä mainittiin, olemme luoneet 4 testitapausta kunkin toiminnon suorittamiseksi itsenäisissä menetelmissä.
- Ensimmäinen menetelmä (openBrowser) alustetaan Firefox selain.
- Toinen menetelmä (käynnistä Google) toteaa, että Google.comin käynnistäminen on alustetussa selaimessa.
- Kolmas menetelmä (peformSeachAndClick1stLink)tilat, jotka suorittavat haun hakukentässä (xpath (.//*[@title='Haku']) hakusanalla as Facebook ja
- Neljäs ja viimeinen menetelmä (FaceBookPageTitleVerification) toteaa, että napsautat Googlen hakukuvaketta ja varmistavat, että selaimen otsikko on muutettu Facebook – Google-haku.
Suorita nyt tämä koodi käyttämällä testNG:tä videon osoittamalla tavalla, löydät kaikki Testitapaus epäonnistuvat. Epäonnistumisen syy: koska edellisen testitapauksen läpäiseminen on riippuvainen, vain nykyinen käynnissä oleva testitapaus hyväksytään.
Tässä tapauksessa,
- Ensimmäinen suoritettava menetelmä on openBrowser(). Se meni läpi, koska sillä ei ole riippuvuutta.
- Toinen suoritettu menetelmä on FaceBookPageTitleVerification(); se epäonnistuu, koska yritämme napsauttaa hakupainiketta ja vahvistaa selaimen otsikon.
- Voit nähdä, että jos hakutoimintaa ei käsitellä, miten mikä tahansa muu vaihe voidaan ohittaa. Tästä syystä testitapaukseni epäonnistuvat.
PASSED: openBrowser FAILED: FaceBookPageTitleVerification FAILED: launchGoogle FAILED: peformSeachAndClick1stLink
Esittely TestNG koodi ilman prioriteettia aakkosjärjestyksessä
Jos emme mainitse mitään prioriteettia, testng suorittaa @Test-menetelmät niiden menetelmänimien aakkosjärjestyksessä riippumatta niiden toteutuspaikasta koodissa.
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"); } }
ulostulo
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
Vaikka määritimme menetelmät satunnaisesti (c, b, a, e, d), testng suoritti menetelmät niiden metodinimien perusteella aakkosjärjestystä harkiten ja sama heijastui myös ulostulokseen.
Kuinka asettaa prioriteetti TestNG
Kuten olet nähnyt edellisessä esimerkissä, että tämän skenaarion läpimeno edellyttää sekvensointia, joten muokkaamme edellistä koodinpätkää Prioriteettiparametri niin, että jokaisen testin tulee olla niille määritettyä prioriteettia vastaan.
Kuten nyt näet, olemme määrittäneet Priority-arvon jokaiselle testitapaukselle, mikä tarkoittaa, että testitapaus suoritetaan ensin alhaisemman prioriteetin arvolla.
Prioriteetti testNG:ssä toiminnassa
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); } }
Koodin selitys
Kun olet määrittänyt prioriteetin jokaiselle testitapaukselle, suorita yllä oleva koodi käyttämällä testNG:tä alla mainitussa Video-2:ssa esitetyllä tavalla.
Täällä voit nähdä, että testitapaukset on priorisoitu. Alhaisemman prioriteetin testitapaukset suoritetaan ensin eli nyt testitapauksissa suoritetaan peräkkäinen suoritus prioriteetin mukaan. Siksi kaikki testitapaukset ovat nyt läpäisseet.
Huomaa eclipse-konsoli:
ulostulo :
PASSED: openBrowser PASSED: launchGoogle PASSED: peformSearchAndClick1stLink PASSED: FaceBookPageTitleVerification
Numerolla 0 on korkein prioriteetti (se suoritetaan ensin) ja prioriteetti jatkuu annetun luvun perusteella, eli 0:lla on korkein prioriteetti kuin 1. 1:llä on korkein prioriteetti kuin 2 ja niin edelleen.
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"); } }
ulostulo
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
Tässä olemme antaneet prioriteetit 0,1,3,6,9. Joten menetelmä, jonka prioriteetti on 0, suoritetaan ensin ja sitten menetelmä, jolla on prioriteetti 1 ja niin edelleen. Tässä aakkosjärjestysmenetelmän nimeä ei oteta huomioon, koska olemme määrittäneet prioriteetit
Menetelmät samalla prioriteetilla
Saattaa olla mahdollista, että menetelmät sisältävät saman prioriteetin. Näissä tapauksissa testng ottaa huomioon menetelmänimien aakkosjärjestyksen, jonka prioriteetti on sama.
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"); } }
ulostulo
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
Tässä "e" ja "d" suoritetaan niiden prioriteettiarvojen perusteella. Mutta menetelmät 'a' ja 'c' sisältävät saman prioriteettiarvon(6). Joten tässä testng ottaa huomioon "a" ja "c" aakkosjärjestyksen ja suorittaa ne sen mukaisesti.
Yhdistämällä sekä priorisoituja (jolla on sama prioriteetti) että priorisoimattomia menetelmiä
Tässä tapauksessa käsittelemme kaksi tapausta yhdessä testiluokassa.
- Menetelmät, joilla on sama prioriteettiarvo.
- Useampi kuin yksi priorisoimaton menetelmä.
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"); } }
lähtö:
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
Selitys:
Ensimmäinen valinta: Priorisoimattomat menetelmät: 'c' ja 'b': Aakkosjärjestyksen perusteella suoritettiin ensin "b" ja sitten "c".
Toinen mieltymys: Priorisoidut menetelmät: 'a', 'e' ja 'd': 'e' suoritettiin ensin, koska sillä oli korkein prioriteetti (0). Koska 'a' ja 'd' -menetelmien prioriteetti oli sama, testattiin niiden menetelmien nimien aakkosjärjestystä. Joten niiden välillä teloitettiin ensin "a" ja sitten "d".
Kirjainkoolla on merkitystä TestNG
Tiedoksi on olemassa standardisyntaksi prioriteetin määrittelemiseksi testNG:ssä eli @Testi (prioriteetti=4), oletetaan, että määrittelet sen jollain muulla syntaksilla @Testi (PRIORITY=1) niin IDE näyttää sen käännösvirheenä. Katso alla oleva kuva:
Yhteenveto
Kuten olet nähnyt, että jos on vaatimus suorittaa joukko testitapauksia tietyssä järjestyksessä, se voidaan tehdä helposti käyttämällä prioriteetti käyttämällä testNG:tä suoritustyökaluna.
Tämä opetusohjelma on mahdollista Ramandeep Singhin ja Raman osallistumisen ansiosta Krishna Gadde