Mikä on TestNG?
TestNG on automaatiotestauskehys, jossa NG tarkoittaa "Next Generation". TestNG on saanut inspiraationsa JUnitista, joka käyttää merkintöjä (@). TestNG voittaa JUnitin haitat ja on suunniteltu helpottamaan päästä päähän -testausta.
TestNG: n avulla voit luoda oikean raportin, ja voit helposti tietää, kuinka monta testitapausta on läpäisty, epäonnistunut ja ohitettu. Voit suorittaa epäonnistuneet testitapaukset erikseen.
Esimerkiksi:
- Oletetaan, että sinulla on viisi testitapausta, yksi menetelmä kirjoitetaan kullekin testitapaukselle (Oletetaan, että ohjelma kirjoitetaan päämenetelmää käyttämättä testNG: tä). Kun suoritat tämän ohjelman ensin, kolme menetelmää suoritetaan onnistuneesti ja neljäs menetelmä epäonnistuu. Korjaa sitten neljännen menetelmän virheet, nyt haluat suorittaa vain neljännen menetelmän, koska kolme ensimmäistä menetelmää suoritetaan joka tapauksessa onnistuneesti. Tämä ei ole mahdollista ilman TestNG: tä.
- Seleniumin TestNG tarjoaa vaihtoehdon, ts. Testng-Fail.xml-tiedosto test-output-kansioon. Jos haluat suorittaa vain epäonnistuneet testitapaukset, se tarkoittaa, että suoritat tämän XML-tiedoston. Se suorittaa vain epäonnistuneet testitapaukset.
Yllä olevan käsitteen ohella opit lisää TestNG: stä, kuten mitä TestNG: n etuja on, kuinka luoda testimenetelmiä @test-merkinnöillä, kuinka muuntaa nämä luokat testaustyökalutiedostoksi ja suorittaa pimennyksen kautta sekä komentoriviltä .
Tässä TestNG-opetusohjelmassa opit
- Miksi käyttää TestNG: tä seleenin kanssa?
- TestNG: n edut JUnitiin verrattuna
- Luo testitapaus käyttämällä TestNG-merkintöjä
- Uuden TestNG-testitiedoston luominen
- Ensimmäisen TestNG-testitapausesimerkin koodaus
- Testin suorittaminen
- Tarkistetaan TestNG: n luomia raportteja
- TestNG: ssä käytetyt merkinnät
- Useita testitapauksia
- Parametrit
- Useita parametreja
- Yhteenveto TestNG-merkinnöistä
Miksi käyttää TestNG: tä seleenin kanssa?
Oletusseleenitestit eivät luo oikeaa muotoa testituloksille. Käyttämällä TestNG: tä seleenissä voimme tuottaa testituloksia.
Suurin osa seleenin käyttäjistä käyttää tätä enemmän kuin Junit sen etujen vuoksi. TestNG: ssä on niin monia ominaisuuksia, mutta keskitymme vain tärkeimpiin ominaisuuksiin, joita voimme käyttää seleenissä. Seuraavat ovat Selenium TestNG: n tärkeimmät ominaisuudet:
- Luo raportti oikeassa muodossa, joka sisältää useita testitapauksia, läpäistyjen testitapausten määrän, epäonnistuneiden testitapausten ja ohitettujen testitapausten määrän.
- Useat testitapaukset voidaan ryhmitellä helpommin muuntamalla ne testng.xml-tiedostoksi. Missä voit asettaa prioriteetit, mikä testitapaus tulisi suorittaa ensin.
- Sama testitapaus voidaan suorittaa useita kertoja ilman silmukoita pelkästään avainsanalla nimeltä kutsujen määrä.
- Testng: n avulla voit suorittaa useita testitapauksia useilla selaimilla, toisin sanoen selaintestit.
- TestNG-kehys voidaan helposti integroida esimerkiksi TestNG Mavenin, Jenkinsin jne. Työkaluihin.
- Testauksessa käytetyt merkinnät ovat erittäin helposti ymmärrettäviä, esim. @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
- WebDriverilla ei ole natiivimekanismia raporttien luomiseen. TestNG voi luoda raportin luettavassa muodossa kuten alla on esitetty.
- TestNG yksinkertaistaa testien koodausta. Testeissämme ei enää tarvita staattista päämenetelmää. Toimintojen järjestystä säätävät helposti ymmärrettävät merkinnät, jotka eivät vaadi menetelmien staattisuutta.
- Testaamattomat poikkeukset käsittelee TestNG automaattisesti keskeyttämättä testiä ennenaikaisesti. Nämä poikkeukset raportoidaan epäonnistuneina vaiheina raportissa.
TestNG: n edut JUnitiin verrattuna
TestNG: llä on kolme suurta etua JUnitiin verrattuna:
- Merkinnät ovat helpommin ymmärrettävissä
- Testitapaukset voidaan ryhmitellä helpommin
- Rinnakkaistestaus on mahdollista
TestNG: n merkinnät ovat koodiriviä, jotka voivat hallita niiden alla olevan menetelmän toteutusta . Niitä edeltää aina @ -merkki. Hyvin varhainen ja nopea TestNG-esimerkki on alla esitetty.
Merkinnöistä keskustellaan myöhemmin osiossa "TestNG: ssä käytetyt merkinnät", joten on täysin ok, jos et vielä ymmärrä yllä olevaa TestNG-esimerkkiä. On vain tärkeää huomata, että TestNG: n merkinnät on helpompi koodata ja ymmärtää kuin JUnitissa.
Kyky suorittaa testejä rinnakkain on saatavana TestNG: ssä, mutta ei JUnitissa, joten TestNG-kehys on edullisempi testaajille, jotka käyttävät Selenium Gridiä.
Luo testitapaus käyttämällä TestNG-merkintöjä
Opimme nyt luomaan ensimmäisen testitapauksen käyttämällä Seleniumin TestNG-merkintöjä:
Ennen kuin luomme testitapauksen, meidän on ensin määritettävä uusi TestNG-projekti Eclipseen ja nimettävä se nimellä "FirstTestNGProject".
Uuden TestNG-projektin perustaminen
Vaihe 1: Napsauta Tiedosto> Uusi> Java-projekti
Vaihe 2: Kirjoita "FirstTestNGProject" projektin nimeksi ja napsauta sitten Seuraava.
Vaihe 3: Alamme nyt tuoda TestNG-kirjastoja projektiimme. Napsauta "Kirjastot" -välilehteä ja sitten "Lisää kirjasto"
… "Vaihe 4: Valitse Lisää kirjasto -valintaikkunassa "TestNG" ja napsauta Seuraava.
Vaihe 5: Napsauta Valmis.
Huomaa, että TestNG sisältyy kirjastoluetteloon.
Vaihe 6: Lisäämme nyt JAR-tiedostot, jotka sisältävät Selenium-sovellusliittymän. Nämä tiedostot löytyvät Java-asiakasohjaimesta, jonka latasimme osoitteesta http://docs.seleniumhq.org/download/, kun asennimme Seleniumia ja Eclipseä edellisiin lukuihin.
Siirry sitten kohtaan, johon olet sijoittanut Selenium JAR -tiedostot.
Kun olet lisännyt ulkoiset JAR-tiedostot, näytön tulisi näyttää tältä.
Vaihe 7: Napsauta Valmis ja tarkista, että FirstTestNGProject on näkyvissä Eclipse's Package Explorer -ikkunassa.
Uuden TestNG-testitiedoston luominen
Nyt kun olemme määrittäneet projektimme tässä TestNG-opetusohjelmassa, luodaan uusi TestNG-tiedosto.
Vaihe 1: Napsauta hiiren kakkospainikkeella "src" -pakettikansiota ja valitse sitten Uusi> Muu
…Vaihe 2: Napsauta TestNG-kansiota ja valitse vaihtoehto "TestNG class". Napsauta Seuraava.
Vaihe 3: Kirjoita alla ilmoitetut arvot asianmukaiseen syöttöruutuun ja napsauta Valmis. Huomaa, että olemme nimenneet Java-tiedostomme nimellä "FirstTestNGFile".
Eclipse luo automaattisesti mallin alla olevalle TestNG-tiedostollemme.
Ensimmäisen TestNG-testitapausesimerkin koodaus
Luodaan nyt ensimmäinen testitapaus, joka tarkistaa, onko Mercury Toursin kotisivu oikea. Kirjoita koodi alla olevan TestNG-esimerkin mukaisesti:
paketti ensimmäinen testipaketti;tuonti org.openqa.selenium. *;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.Assert;tuo org.testng.nototations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Merkkijono driverPath = "C: \\ geckodriver.exe";julkinen WebDriver-ohjain;@Testatapublic void verifyHomepageTitle () {System.out.println ("Firefox-selaimen käynnistäminen");System.setProperty ("webdriver.gecko.driver", driverPath);ohjain = uusi FirefoxDriver ();driver.get (baseUrl);String expectedTitle = "Tervetuloa: Mercury Tours";Merkkijono actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, odotettavissaTitle);kuljettaja.sulje ();}}
Huomaa seuraava.
- TestNG ei vaadi, että sinulla on main () -metodi.
- Menetelmien ei tarvitse olla staattisia.
- Käytimme @Test-merkintää. @Testillä kerrotaan, että sen alla oleva menetelmä on testitapaus . Tässä tapauksessa olemme asettaneet VerHomepageTitle () -menetelmän testitapaukseksi, joten sijoitimme sen yläpuolelle @Test-merkinnän.
- Koska käytämme merkintöjä TestNG: ssä, meidän on tuotava paketti org.testng.annotations. *.
- Käytimme Assert-luokkaa. Assert-luokkaa käytetään todentamistoimien suorittamiseen TestNG: ssä . Sen käyttämiseksi meidän on tuotava org.testng.Assert-paketti.
Sinulla voi olla useita testitapauksia (siis useita @Test-merkintöjä) yhdessä TestNG-tiedostossa. Tätä käsitellään tarkemmin myöhemmin osiossa "TestNG: ssä käytetyt merkinnät".
Testin suorittaminen
Suorita testi suorittamalla tiedosto Eclipse-ohjelmassa tavalliseen tapaan. Eclipse tarjoaa kaksi lähtöä - yhden Konsoli-ikkunassa ja toisen TestNG-tulokset -ikkunassa.
Tarkistetaan TestNG: n luomia raportteja
Eclipse-konsoli-ikkuna antaa tekstipohjaisen raportin testituloksistamme, kun taas TestNG-tulokset-ikkuna antaa meille graafisen.
HTML-raporttien luominen
TestNG pystyy luomaan raportteja HTML-muodossa.
Vaihe 1: Kun olet suorittanut edellisessä osiossa luomamme FirstTestNGFile-tiedoston, napsauta hiiren kakkospainikkeella projektin nimeä (FirstTestNGProject) Project Explorer -ikkunassa ja napsauta sitten Päivitä-vaihtoehtoa.
Vaihe 2: Huomaa, että "test-output" -kansio luotiin. Laajenna sitä ja etsi index.html-tiedosto. Tämä HTML-tiedosto on raportti viimeisimmän testiajon tuloksista.
Vaihe 3: Kaksoisnapsauta kyseistä index.html-tiedostoa avataksesi sen Eclipsen sisäisessä selaimessa. Voit päivittää tämän sivun milloin tahansa testin uudelleenkäynnistyksen jälkeen painamalla F5-näppäintä aivan kuten tavallisissa verkkoselaimissa.
TestNG: ssä käytetyt merkinnät
Edellisessä osassa sinut on tutustuttu @Test-merkintään. Nyt tutkitaan edistyneempiä merkintöjä ja niiden käyttötapoja.
Useita testitapauksia
Voimme käyttää useita @Test-merkintöjä yhdessä TestNG-tiedostossa. Oletusarvoisesti @Testin merkitsemät menetelmät suoritetaan aakkosjärjestyksessä. Katso alla oleva koodi. Vaikka menetelmiä c_test, a_test ja b_test ei ole järjestetty aakkosjärjestykseen koodissa, ne suoritetaan sellaisenaan.
Suorita tämä koodi ja valitse luotu index.html -sivu "Aikajärjestysnäkymä".
Parametrit
Jos haluat, että menetelmät suoritetaan eri järjestyksessä, käytä parametria "prioriteetti". Parametrit ovat avainsanoja, jotka muuttavat merkinnän toimintoa .
- Parametrit edellyttävät, että määrität niille arvon. Teet tämän. Asettamalla niiden viereen ja sen jälkeen arvon.
- Parametrit ovat sulkeissa, jotka sijoitetaan heti merkinnän jälkeen, kuten alla oleva koodinpätkä.
TestNG suorittaa @Test-merkinnän pienimmällä prioriteettiarvolla suurimpaan saakka. Ensisijaisten arvojen ei tarvitse olla peräkkäisiä.
TestNG HTML -raportti vahvistaa, että menetelmät suoritettiin prioriteetin nousevan arvon perusteella.
Useita parametreja
"Prioriteetin" lisäksi @Testillä on toinen parametri nimeltä "alwaysRun", joka voidaan asettaa vain joko "true" tai "false". Jos haluat käyttää kahta tai useampaa parametria yhdessä merkinnässä, erota ne pilkulla , kuten alla esitetyllä.
@Test (prioriteetti = 0, alwaysRun = true)
@BeforeTest ja @AfterTest
@BeforeTest |
Tämän merkinnän mukaiset menetelmät suoritetaan ennen ensimmäistä testitapausta TestNG-tiedostossa . |
@AfterTest |
Tämän merkinnän mukaiset menetelmät suoritetaan, kun kaikki TestNG-tiedoston testitapaukset on suoritettu . |
Harkitse alla olevaa koodia.
paketti ensimmäinen testipaketti;tuonti org.openqa.selenium. *;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.Assert;tuo org.testng.nototations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Merkkijono driverPath = "C: \\ geckodriver.exe";julkinen WebDriver-ohjain;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefox-selaimen käynnistäminen");System.setProperty ("webdriver.gecko.driver", driverPath);ohjain = uusi FirefoxDriver ();driver.get (baseUrl);}@Testatapublic void verifyHomepageTitle () {String expectedTitle = "Tervetuloa: Mercury Tours";Merkkijono actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, odotettavissaTitle);}@AfterTestpublic void terminateBrowser () {kuljettaja.sulje ();}}
Käyttämällä taulukon ja yllä olevan koodin logiikkaa voimme ennustaa, että järjestys, jolla menetelmät suoritetaan, on:
- 1. s - launchBrowser ()
- 2 nd - verifyHomepageTitle ()
- 3. päivä - lopeta selain ()
Annotointilohkojen sijoitus voidaan vaihtaa vaikuttamatta kronologiseen järjestykseen, jolla ne suoritetaan . Ymmärretään TestNG-esimerkillä ja yritetään järjestää merkintälohkot uudelleen siten, että koodisi näyttäisi olevan samanlainen kuin alla.
paketti ensimmäinen testipaketti;tuonti org.openqa.selenium. *;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.Assert;tuo org.testng.nototations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Merkkijono driverPath = "C: \\ geckodriver.exe";julkinen WebDriver-ohjain;@AfterTest // sekaisinpublic void terminateBrowser () {kuljettaja.sulje ();}@BeforeTest // Sekaisinpublic void launchBrowser () {System.out.println ("Firefox-selaimen käynnistäminen");System.setProperty ("webdriver.gecko.driver", driverPath);ohjain = uusi FirefoxDriver ();driver.get (baseUrl);}@Test // Jumbledpublic void verifyHomepageTitle () {String expectedTitle = "Tervetuloa: Mercury Tours";Merkkijono actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, odotettavissaTitle);}}
Suorita yllä oleva koodi ja huomaa se
@BeforeMethod ja @AfterMethod
@BeforeMethod |
Tämän merkinnän mukaiset menetelmät suoritetaan ennen kutakin menetelmää kussakin testitapauksessa . |
@AfterMethod |
Tämän huomautuksen mukaiset menetelmät suoritetaan jokaisen menetelmän jälkeen kussakin testitapauksessa. |
Oletetaan, että Mercury Tours -ohjelmassa haluamme tarkistaa alla olevien kahden linkin kohdesivujen otsikot.
Testimme virtaus olisi:
- Mene kotisivulle ja tarkista sen otsikko.
- Napsauta Rekisteröi ja tarkista kohdesivun otsikko.
- Palaa kotisivulle ja tarkista, onko sillä vielä oikea otsikko.
- Napsauta TUKI ja tarkista kohdesivun otsikko.
- Palaa kotisivulle ja tarkista, onko sillä vielä oikea otsikko.
Alla oleva koodi kuvaa kuinka @BeforeMethod ja @AfterMethod käytetään yllä mainitun skenaarion tehokkaaseen toteuttamiseen.
paketti ensimmäinen testipaketti;tuonti org.openqa.selenium. *;tuo org.openqa.selenium.firefox.FirefoxDriver;tuo org.testng.Assert;tuo org.testng.nototations. *;@Testatapublic class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";Merkkijono driverPath = "C: \\ geckodriver.exe";julkinen WebDriver-ohjain;public String odotettavissa = null;julkinen merkkijono todellinen = tyhjä;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefox-selaimen käynnistäminen");System.setProperty ("webdriver.gecko.driver", driverPath);ohjain = uusi FirefoxDriver ();driver.get (baseUrl);}@BeforeMethodpublic void verifyHomepageTitle () {String expectedTitle = "Tervetuloa: Mercury Tours";Merkkijono actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, odotettavissaTitle);}@Test (prioriteetti = 0)public void register () {driver.findElement (By.linkText ("REGISTER")). napsauta ();odotettavissa = "Rekisteröidy: Mercury Tours";todellinen = driver.getTitle ();Assert.assertEquals (todellinen, odotettu);}@Test (prioriteetti = 1)julkinen mitätön tuki () {driver.findElement (By.linkText ("TUKI")). napsauta ();odotettavissa = "Rakenteilla: Mercury Tours";todellinen = driver.getTitle ();Assert.assertEquals (todellinen, odotettu);}@AfterMethodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Koti")). napsauta ();}@AfterTestpublic void terminateBrowser () {kuljettaja.sulje ();}}
Testin suorittamisen jälkeen TestNG: n tulisi raportoida seuraava jakso.
Yksinkertaisesti sanottuna, @BeforeMethodin tulisi sisältää menetelmiä, jotka sinun on suoritettava ennen kutakin testitapausta, kun taas @AfterMethodin tulisi sisältää menetelmiä, jotka sinun on suoritettava jokaisen testitapauksen jälkeen .
Yhteenveto TestNG-merkinnöistä
@BeforeSuite : Merkitty menetelmä suoritetaan ennen kuin kaikki tämän sarjan testit on suoritettu.
@AfterSuite : Selitysmenetelmä suoritetaan, kun kaikki tämän paketin testit on suoritettu.
@BeforeTest : Annotoitu menetelmä suoritetaan ennen kuin kaikki tagin sisällä oleviin luokkiin kuuluvat testimenetelmät suoritetaan.
@AfterTest : Annotoitu menetelmä suoritetaan, kun kaikki tagin sisällä oleviin luokkiin kuuluvat testimenetelmät on suoritettu.
@BeforeGroups : Luettelo ryhmistä, joita tämä määritystapa suoritetaan ennen. Tämän menetelmän taataan toimivan vähän ennen kuin ensimmäiseen mihin tahansa näistä ryhmistä kuuluva testimenetelmä käynnistetään.
@AfterGroups : Luettelo ryhmistä, joiden jälkeen tämä määritystapa suoritetaan. Tämän menetelmän on taattu toimia pian sen jälkeen, kun viimeinen mihin tahansa näistä ryhmistä kuuluva testimenetelmä on vedetty.
@BeforeClass : Annotoitu menetelmä suoritetaan ennen nykyisen luokan ensimmäisen testimenetelmän käyttämistä.
@AfterClass : Annotoitu menetelmä suoritetaan, kun kaikki nykyisen luokan testimenetelmät on suoritettu.
@BeforeMethod : Annotoitu menetelmä suoritetaan ennen kutakin testimenetelmää.
@AfterMethod : Annotoitu menetelmä suoritetaan jokaisen testimenetelmän jälkeen.
@Test : Annotoitu menetelmä on osa testitapausta
Johtopäätös
- TestNG on testauskehys, joka pystyy helpottamaan seleenitestien ymmärtämistä ja tuottamaan helposti ymmärrettäviä raportteja.
- TestNG: n tärkeimmät edut JUnitiin verrattuna ovat seuraavat.
- Merkintöjä on helpompi käyttää ja ymmärtää.
- Testitapaukset voidaan ryhmitellä helpommin.
- TestNG antaa meille mahdollisuuden luoda rinnakkaisia testejä.
- Eclipse-konsoli-ikkuna tuottaa tekstipohjaisen tuloksen, kun taas TestNG-ikkuna on hyödyllisempi, koska se antaa meille graafisen tuloksen testituloksesta ja muita merkityksellisiä yksityiskohtia, kuten:
- Kunkin menetelmän käyttöajat.
- Menetelmien toteuttamisjärjestys
- TestNG pystyy tuottamaan HTML-pohjaisia raportteja.
- Merkinnät voivat käyttää parametreja aivan kuten tavalliset Java TestNG -menetelmät.
- TestNG Dataprovider on tapa siirtää parametrit testitoimintoon, joka välittää eri arvot testitapauksissa yhdessä suorituksessa.