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 suoritettava Google hae tietyllä hakusanalla, kuten ”Facebook”. Varmista nyt, että selaimen otsikko on muuttunut muotoon ”Facebook – Google Haku".
Huomautus: Jokaisen koodattavan vaiheen tulee olla eri menetelmissä
Menetelmä 1: Avaa selain sano Firefox (openBrowser())
Menetelmä 2: Käynnistä Google.com (käynnistysGoogle())
Menetelmä 3: Suorita haku käyttämällä Facebookia (performSearchAndClick1stLink())
Menetelmä 4Vahvista Google hakusivun otsikko (FaceBookPageTitleVerification())
Code meidän skenaariossamme:
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);
}
}
Selitys Code
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) valtiot, jotka käynnistävät Google.com 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) osavaltiot, jotka napsauttavat hakukuvaketta Google ja varmista, että selaimen otsikko on muutettu muotoon Facebook - Google Hae.
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);
}
}
Selitys Code
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

