TestNG on testauskehys, joka kattaa erityyppiset testisuunnitelmat, kuten yksikkötesti, toiminnallinen testi, päästä päähän -testi, käyttöliittymätesti ja integraatiotesti.
Voit suorittaa yhden tai useita testitapauksia Testng-koodissasi.
Jos testiprioriteettia ei ole määritetty suoritettaessa useita testitapauksia, TestNG määrittää kaikille @Test-prioriteeteille nollan (0).
Nyt juoksun aikana; alemmat prioriteetit suunnitellaan ensin.
Tässä opetusohjelmassa opit -
- TestNG-koodin esittely ilman prioriteettia
- TestNG-koodin esittely ilman prioriteettia aakkosjärjestyksessä
- Kuinka asettaa prioriteetti TestNG: ssä
- Menetelmät samalla prioriteetilla
- Yhdistämällä sekä priorisoidut (joilla on sama prioriteetti) että priorisoimattomat menetelmät
TestNG-koodin esittely ilman prioriteettia
Otetaan skenaario, jossa sekvensointi vaaditaan kaikkien testitapausten läpäisemiseksi:
Skenaario: Luo koodi, johon sinun on tehtävä Google-haku tietyllä avainsanalla sanomalla "Facebook". Tarkista nyt, että selaimen otsikko on muutettu "Facebook - Google-haku".
Huomaa: Jokaisen koodaamasi vaiheen tulisi olla erillinen
Tapa 1 : Avaa selain sano Firefox (openBrowser ())
Tapa 2 : Käynnistä Google.com (launchGoogle ())
Tapa 3 : Suorita haku käyttämällä Facebookia (performSearchAndClick1stLink ())
Tapa 4 : Vahvista Google-hakusivun otsikko (FaceBookPageTitleVerification ())
Skenaarion koodi :
tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.Assert;tuo org.testng.annotations.Test;julkinen luokka Priority_In_testNG {WebDriver-ohjain;// Tapa 1: Avaa Brower sanoa Firefox@Testatapublic void openBrowser () {ohjain = uusi FirefoxDriver ();}// Tapa 2: Käynnistä Google.com@Testatapublic void launchGoogle () {driver.get ("http://www.google.co.in");}// Tapa 3: Suorita haku Facebookin avulla@Testatapublic void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Haku']")). sendKeys ("Facebook");}// Tapa 4: Vahvista Google-hakusivun otsikko.@Testatapublic void FaceBookPageTitleVerification () heittää poikkeuksen {driver.findElement (By.xpath (".//*[@ value = 'Haku']")). napsauta ();Lanka. Unessa (3000);Assert.assertEquals (driver.getTitle (). Sisältää ("Facebook - Google-haku"), true);}}
Koodin selitys
Kuten edellä mainittiin, olemme luoneet 4 testitapausta kunkin toiminnon suorittamiseksi itsenäisinä menetelminä.
- Ensimmäisessä menetelmässä (openBrowser) Firefox-selain alustetaan.
- Toisessa menetelmässä (launchGoogle) todetaan, että Google.com käynnistetään alustetussa selaimessa.
- Kolmas menetelmä (peformSeachAndClick1stLink) ilmoittaa, että haku suoritetaan hakukentässä (jossa xpath (".//*[@title='Search ']") ja hakutermi on Facebook ja
- Neljäs ja viimeinen menetelmä (FaceBookPageTitleVerification) kertoo, että napsautetaan Googlen hakukuvaketta ja varmistetaan, että selaimen otsikko on muutettu Facebookiksi - Google-haku.
Suorita tämä koodi nyt testNG: llä, kuten videossa näkyy, että kaikki testitapaukset epäonnistuvat. Epäonnistumisen syy: Koska edellisen testitapauksen riippuvuus on läpäistävä, vain nykyinen käynnissä oleva testitapaus hyväksytään.
Tässä tapauksessa,
- Ensimmäinen suoritettava menetelmä on openBrowser (). Se ohitettiin, koska sillä ei ole mitään riippuvuutta.
- Toinen suoritettu menetelmä on FaceBookPageTitleVerification (); se epäonnistuu, koska yritämme napsauttaa hakupainiketta ja tarkistaa selaimen otsikko.
- Voit nähdä, että jos hakutoiminta ei ole prosessia, miten mikä tahansa muu vaihe voidaan ohittaa. Tästä syystä testitapaukseni epäonnistuvat.
PASSED: openBrowserVIKA: FaceBookPageTitleVerificationVIKA: käynnistäGoogleFAILED: peformSeachAndClick1stLink
TestNG-koodin esittely ilman prioriteettia aakkosjärjestyksessä
Jos emme mainitse mitään prioriteettia, testng suorittaa @Test -menetelmät niiden nimien aakkosjärjestyksessä riippumatta niiden toteutuspaikasta koodissa.
paketti com.guru.testngannotations;tuo org.testng.annotations.Test;julkinen luokka TestNG_Priority_Annotations {@Testatapublic void c_method () {System.out.println ("Olen menetelmässä C");}@Testatapublic void b_method () {System.out.println ("Olen menetelmässä B");}@Testatapublic void a_method () {System.out.println ("Olen menetelmässä A");}@Testatapublic void e_method () {System.out.println ("Olen menetelmässä E");}@Testatapublic void d_method () {System.out.println ("Olen menetelmässä D");}}
Tuotos
Olen menetelmässä A.Olen menetelmässä BOlen menetelmässä COlen menetelmässä DOlen menetelmässä E
Vaikka määritelimme menetelmät satunnaisella tavalla (c, b, a, e, d), testng suoritti menetelmät niiden menetelmien nimien perusteella ottamalla huomioon aakkosjärjestys ja sama heijastui myös lähtöön.
Kuinka asettaa prioriteetti TestNG: ssä
Kuten olet nähnyt edellisessä esimerkissä, että sekvensointi on välttämätöntä tämän skenaarion läpäisemiseksi, joten muokkaamme edellistä koodikappaletta Prioriteettiparametrilla niin, että jokaisen testin tulisi kulkea heille osoitetun prioriteetin kanssa.
Kuten näette, olemme antaneet prioriteetin jokaiselle testitapaukselle, eli testitapaus suoritetaan ensin pienemmällä prioriteettiarvolla.
Prioriteetti testNG: ssä toiminnassa
tuo org.openqa.selenium.By;tuo org.openqa.selenium.WebDriver;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.Assert;tuo org.testng.annotations.Test;julkinen luokka Priority_In_testNG {WebDriver-ohjain;// Tapa 1: Avaa selain sano Firefox@Test (prioriteetti = 1)public void openBrowser () {ohjain = uusi FirefoxDriver ();}// Tapa 2: Käynnistä Google.com@Test (prioriteetti = 2)public void launchGoogle () {driver.get ("http://www.google.co.in");}// Tapa 3: Suorita haku Facebookin avulla@Test (prioriteetti = 3)public void peformSeachAndClick1stLink () {driver.findElement (By.xpath (".//*[@ title = 'Haku']")). sendKeys ("Facebook");}// Tapa 4: Vahvista Google-hakusivun otsikko.@Test (prioriteetti = 4)public void FaceBookPageTitleVerification () heittää poikkeuksen {driver.findElement (By.xpath (".//*[@ value = 'Haku']")). napsauta ();Lanka. Unessa (3000);Assert.assertEquals (driver.getTitle (). Sisältää ("Facebook - Google-haku"), true);}}
Koodin selitys
Kun olet määrittänyt prioriteetin jokaiselle testitapaukselle, suorita yllä oleva koodi testNG: llä, kuten alla mainitussa Video-2: ssa on esitetty.
Täällä voit nähdä, että testitapaukset priorisoidaan. Testitapaukset, joilla on matalampi prioriteetti, suoritetaan ensin, ts. Testitapauksissa on prioriteetin mukainen peräkkäinen suoritus. Siksi kaikki testitapaukset kulkevat nyt.
Huomaa pimennyksen konsoli:
Tuotos :
PASSED: openBrowserSIIRRETTY: launchGooglePASSED: peformSearchAndClick1stLinkPASSED: FaceBookPageTitleVerification
Numerolla 0 on korkein prioriteetti (se suoritetaan ensin) ja prioriteetti jatkuu annetun numeron perusteella eli 0: lla on korkein prioriteetti kuin 1. 1: llä on korkein prioriteetti kuin 2 ja niin edelleen.
paketti com.guru.testngannotations;tuo org.testng.annotations.Test;julkinen luokka TestNG_Priority_Annotations {@Test (prioriteetti = 6)public void c_method () {System.out.println ("Olen menetelmässä C");}@Test (prioriteetti = 9)public void b_method () {System.out.println ("Olen menetelmässä B");}@Test (prioriteetti = 1)public void a_method () {System.out.println ("Olen menetelmässä A");}@Test (prioriteetti = 0)public void e_method () {System.out.println ("Olen menetelmässä E");}@Test (prioriteetti = 3)public void d_method () {System.out.println ("Olen menetelmässä D");}}
Tuotos
Olen menetelmässä EOlen menetelmässä A.Olen menetelmässä DOlen menetelmässä COlen menetelmässä B
Tässä olemme asettaneet 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 annoimme prioriteetit
Menetelmät samalla prioriteetilla:
Menetelmät saattavat sisältää saman prioriteetin. Tällöin testng ottaa huomioon niiden menetelmien nimien aakkosjärjestyksen, joiden prioriteetti on sama.
paketti com.guru.testngannotations;tuo org.testng.annotations.Test;julkinen luokka TestNG_Priority_Annotations {@Test (prioriteetti = 6)public void c_method () {System.out.println ("Olen menetelmässä C");}@Test (prioriteetti = 9)public void b_method () {System.out.println ("Olen menetelmässä B");}@Test (prioriteetti = 6)public void a_method () {System.out.println ("Olen menetelmässä A");}@Test (prioriteetti = 0)public void e_method () {System.out.println ("Olen menetelmässä E");}@Test (prioriteetti = 3)public void d_method () {System.out.println ("Olen menetelmässä D");}}
Tuotos
Olen menetelmässä EOlen menetelmässä DOlen menetelmässä A.Olen menetelmässä COlen menetelmässä B
Tässä 'e' ja 'd' suoritetaan niiden prioriteettiarvojen perusteella. Mutta menetelmissä 'a' ja 'c' on sama prioriteettiarvo (6). Joten tässä testng tarkastelee aakkosjärjestystä a ja c ja suorittaa ne vastaavasti.
Sekä priorisoidut (joilla on sama prioriteetti) että priorisoimattomat menetelmät:
Tässä tapauksessa käsittelemme kaksi tapausta yhdessä testng-luokassa.
- Menetelmät, joilla on sama prioriteettiarvo.
- Useampi kuin yksi priorisoimaton menetelmä.
paketti com.guru.testngannotations;tuo org.testng.annotations.Test;julkinen luokka TestNG_Priority_Annotations {@Testata()public void c_method () {System.out.println ("Olen menetelmässä C");}@Testata()public void b_method () {System.out.println ("Olen menetelmässä B");}@Test (prioriteetti = 6)public void a_method () {System.out.println ("Olen menetelmässä A");}@Test (prioriteetti = 0)public void e_method () {System.out.println ("Olen menetelmässä E");}@Test (prioriteetti = 6)public void d_method () {System.out.println ("Olen menetelmässä D");}}
Tuotos:
Olen menetelmässä BOlen menetelmässä COlen menetelmässä EOlen menetelmässä A.Olen menetelmässä D
YLITETTY: b_menetelmäYLITETTY: c_metodeYLITETTY: e_metodeYLITETTY: a_metodeYLITETTY: d_metode
Selitys:
Ensimmäinen etusija: Ei priorisoidut menetelmät: 'c' ja 'b': Aakkosjärjestyksen perusteella ensin suoritettiin 'b' ja sitten 'c'.
Toinen etusija: priorisoidut menetelmät: 'a', 'e' ja 'd': 'e' suoritettiin ensin, koska sillä oli korkein prioriteetti (0). Koska a- ja d-menetelmien prioriteetti oli sama, testng otti huomioon niiden menetelmien nimien aakkosjärjestyksen. Joten heidän välissään ensin suoritettiin a ja sitten d.
Kirjainkoon erottelu TestNG: ssä
Ainoastaan tiedoksi, että testNG: n prioriteetin määrittelemiseksi on vakiosyntaksi eli @Test (prioriteetti = 4) , oletetaan , että määrität sen joissakin muissa syntaksissa sanoen @Test (PRIORITY = 1), IDE näyttää sen kokoamisvirheenä . Katso alla oleva kuva:
Päätelmä:
Kuten olet nähnyt, että jos on tarpeen suorittaa joukko testitapauksia tietyssä järjestyksessä, se voidaan tehdä helposti käyttämällä Priority- asetusta käyttämällä testNG: tä ajotyökaluna.
Tämä opetusohjelma on mahdollinen Ramandeep Singhin ja Rama Krishna Gadden panoksen ansiosta