TestNG õpetus: mis on, märkused ja Raamistik seleenis

Lang L: none (table-of-contents):

Anonim

Mis on TestNG?

TestNG on automaatika testimise raamistik, milles NG tähistab "Next Generation". TestNG on inspireeritud JUnitist, mis kasutab märkusi (@). TestNG ületab JUniti puudused ja on loodud selleks, et muuta otsast lõpuni testimine lihtsaks.

TestNG abil saate luua korraliku aruande ja saate hõlpsasti teada, kui palju testjuhtumeid on läbitud, ebaõnnestunud ja vahele jäetud. Ebaõnnestunud testjuhtumeid saate käivitada eraldi.

Näiteks:

  • Oletame, et teil on viis testimisjuhtu, iga testjuhtumi jaoks on kirjutatud üks meetod (Oletame, et programm on kirjutatud peamise meetodi abil ilma testNG-d kasutamata). Selle programmi käivitamisel käivitatakse kolm meetodit edukalt ja neljas meetod nurjub. Seejärel parandage neljandas meetodis esinevad vead, nüüd soovite käivitada ainult neljanda meetodi, sest kolm esimest meetodit viiakse nagunii edukalt läbi. See ei ole võimalik ilma TestNG-d kasutamata.
  • Seleenis olev TestNG pakub valiku, st fail testng-fail.xml test-output kaustas. Kui soovite käivitada ainult ebaõnnestunud testjuhtumeid, tähendab see, et käivitate selle XML-faili. See täidab ainult ebaõnnestunud testjuhtumeid.

Ülaltoodud kontseptsiooni kõrval saate rohkem teada TestNG-st, näiteks millised on TestNG-i eelised, kuidas luua testimeetodeid @test-märkuste abil, kuidas teisendada need klassid testimispaketi failiks ja käivitada nii varjutuse kaudu kui ka käsurealt .

Selles TestNG õpetuses saate teada

  • Miks kasutada TestNG koos seleeniga?
  • TestNG eelised JUniti ees
  • Looge testjuhtum TestNG märkuste abil
  • Uue TestNG testifaili loomine
    • Meie esimese TestNG testijuhtumi näite kodeerimine
    • Testi sooritamine
  • TestNG loodud aruannete kontrollimine
  • TestNG-s kasutatud märkused
  • Mitu katsejuhtumit
  • Parameetrid
    • Mitu parameetrit
    • TestNG märkuste kokkuvõte

Miks kasutada TestNG koos seleeniga?

Vaikse seleeni testid ei loo testitulemuste jaoks õiget vormingut. TestNG kasutamist seleenis saame genereerida testitulemused.

Enamik seleeni kasutajaid kasutab seda eeliste tõttu rohkem kui Junit. TestNG-l on nii palju funktsioone, kuid keskendume ainult kõige olulisematele, mida saame seleenis kasutada. Järgmised on seleeni testNG põhijooned:

  • Looge aruanne õiges vormingus, sisaldades mitmeid testijuhtumeid, läbitud testjuhtumite arvu, ebaõnnestunud testjuhtumite arvu ja vahele jäetud testjuhtumite arvu.
  • Mitut testjuhtumit saab hõlpsamini rühmitada, teisendades need failiks testng.xml. Milles saate seada prioriteedid, milline testjuhtum tuleks kõigepealt läbi viia.
  • Sama testjuhtumit saab käivitada mitu korda ilma tsükliteta, kasutades lihtsalt märksõna nimega 'kutsumiste arv'.
  • Testng-i abil saate mitmel brauseril käivitada mitu testimisjuhtu, st brauseritevahelise testimise.
  • TestNG raamistiku saab hõlpsasti integreerida selliste tööriistadega nagu TestNG Maven, Jenkins jne.
  • Testimisel kasutatud märkmeid on väga lihtne mõista, näiteks: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriveril pole aruannete genereerimiseks natiivmehhanismi. TestNG saab aruande luua loetavas vormingus, nagu allpool näidatud.
  • TestNG lihtsustab testide kodeerimist. Meie testides pole enam vaja staatilist peamist meetodit. Toimingute järjestust reguleerivad hõlpsasti mõistetavad märkused, mis ei nõua meetodite staatilisust.
  • Tõrkamata erandeid käsitleb TestNG automaatselt, katse enneaegselt lõpetamata. Need erandid on aruandes nurjunud sammudena.

TestNG eelised JUniti ees

TestNG-l on JUniti ees kolm peamist eelist:

  • Märkustest on lihtsam aru saada
  • Testjuhtumeid saab hõlpsamini rühmitada
  • Paralleelne testimine on võimalik

TestNG-s olevad märkused on koodiread, mis võimaldavad kontrollida, kuidas nende all olev meetod rakendatakse . Neile eelneb alati sümbol @. Allpool on toodud väga varajane ja kiire TestNG näide.

Kommentaare arutatakse hiljem jaotises "TestNG-s kasutatud märkused", nii et see on täiesti ok, kui te ei mõista ülaltoodud TestNG näidet veel. Praegu on oluline märkida, et TestNG-s on märkmeid lihtsam kodeerida ja mõista kui JUnitis.

Testide paralleelse käivitamise võimalus on saadaval TestNG-s, kuid mitte JUnitis, seega on TestNG raamistik eelistatum testijatele, kes kasutavad seleenivõrku.

Looge testjuhtum TestNG märkuste abil

Nüüd õpime, kuidas luua oma esimene proovijuhtum, kasutades seleenis olevaid TestNG märkusi:

Enne testjuhtumi loomist peaksime kõigepealt seadistama Eclipse'is uue TestNG projekti ja nimetama selle nimeks "FirstTestNGProject".

Uue TestNG projekti seadistamine

1. samm: klõpsake nuppu Fail> Uus> Java projekt

2. samm: tippige projekti nimeks "FirstTestNGProject", seejärel klõpsake nuppu Edasi.

3. samm: alustame nüüd TestNG teekide importimist oma projekti. Klõpsake vahekaarti "Raamatukogud" ja seejärel nuppu "Lisa kogu

… "

4. samm: valige dialoogi Lisa kogu juurde "TestNG" ja klõpsake nuppu Edasi.

5. samm: klõpsake nuppu Lõpeta.

Peaksite tähele panema, et TestNG on lisatud raamatukogude loendisse.

6. samm: lisame nüüd seleeni API-d sisaldavad JAR-failid. Need failid on Java draiverist, mille laadisime alla aadressilt http://docs.seleniumhq.org/download/, kui eelmistesse peatükkidesse Seleniumi ja Eclipse'i installisime.

Seejärel navigeerige kohta, kuhu olete seleeni JAR-failid paigutanud.

Pärast väliste JAR-ide lisamist peaks teie ekraan välja nägema selline.

7. samm: klõpsake nuppu Lõpeta ja veenduge, et meie FirstTestNGProject on Eclipse'i paketihalduri aknas nähtav.

Uue TestNG testifaili loomine

Nüüd, kui oleme selles TestNG-õpetuses oma projekti seadistanud, loome uue TestNG-faili.

1. samm: paremklõpsake paketi kaustas "src" ja valige Uus> Muu

2. samm: klõpsake kausta TestNG ja valige suvand "TestNG klass". Klõpsake nuppu Edasi.

3. samm: tippige allpool näidatud väärtused vastavatesse sisestuskastidesse ja klõpsake nuppu Lõpeta. Pange tähele, et oleme oma Java-faili nimetanud "FirstTestNGFile".

Eclipse peaks automaatselt looma meie TestNG-faili malli, mis on näidatud allpool.

Meie esimese TestNG testijuhtumi näite kodeerimine

Loogem nüüd meie esimene testjuhtum, mis kontrollib, kas Mercury Toursi koduleht on õige. Sisestage oma kood, nagu on näidatud allpool TestNG näites:

pakett firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.nototations. *;avalik klass firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";avalik WebDriveri draiver;@Testpublic void verifyHomepageTitle () {System.out.println ("Firefoxi brauseri käivitamine");System.setProperty ("webdriver.gecko.driver", driverPath);draiver = uus FirefoxDriver ();draiver.get (baseUrl);String eeldatavTitle = "Tere tulemast: Merkuuri tuurid";String actualTitle = draiver.getTitle ();Assert.assertEquals (tegelikTitle, eeldatavTitle);juht.sule ();}}

Pange tähele järgmist.

  • TestNG ei nõua peamise () meetodi olemasolu.
  • Meetodid ei pea olema staatilised.
  • Kasutasime märkust @Test. @ Testi kasutatakse selleks, et öelda, et selle alla kuuluv meetod on testjuhtum . Sel juhul oleme oma testjuhtumiks seadnud meetodi VerHomepageTitle (), nii et selle kohale paigutasime märkuse @Test.
  • Kuna me kasutame TestNG-s märkmeid, pidime importima paketi org.testng.annotations. *.
  • Kasutasime Assert klassi. Assert-klassi kasutatakse TestNG-s kontrollimistoimingute läbiviimiseks . Selle kasutamiseks peame importima paketi org.testng.Assert.

Teil võib ühes TestNG-failis olla mitu testimisjuhtu (seega mitu @Testi märkust). Seda käsitletakse üksikasjalikumalt hiljem jaotises "TestNG-s kasutatud märkused".

Testi sooritamine

Testi käivitamiseks käivitage fail lihtsalt Eclipse'is, nagu tavaliselt. Eclipse pakub kahte väljundit - üks aknas Konsool ja teine ​​aknas TestNG tulemused.

TestNG loodud aruannete kontrollimine

Eclipse'i konsooliaken annab tekstipõhise aruande meie testijuhtumi tulemustest, aken TestNG tulemused aga graafilise.

HTML-aruannete genereerimine

TestNG suudab luua HTML-vormingus aruandeid.

1. samm: pärast meie eelmises jaotises loodud FirstTestNGFile'i käivitamist paremklõpsake projekti nimega (FirstTestNGProject) Project Exploreri aknas, seejärel klõpsake valikut "Värskenda".

2. samm: pange tähele, et loodi kaust "test-output". Laiendage seda ja otsige fail index.html. See HTML-fail on viimase testisõidu tulemuste aruanne.

3. samm: topeltklõpsake sellel failil index.html, et see Eclipse'i sisseehitatud veebibrauseris avada. Pärast testi uuesti käivitamist saate seda lehte värskendada igal ajal, vajutades lihtsalt F5 nagu tavalistes veebibrauserites.

TestNG-s kasutatud märkused

Eelmises jaotises tutvustati teile märkust @Test. Nüüd uurime täpsemaid märkusi ja nende kasutamist.

Mitu katsejuhtumit

Saame ühes TestNG-failis kasutada mitut @Test-märkust. Vaikimisi täidetakse @Testi poolt märgitud meetodid tähestiku järgi. Vaadake allolevat koodi. Kuigi meetodid c_test, a_test ja b_test ei ole koodis tähestikuliselt paigutatud, käivitatakse need sellisena.

Käivitage see kood ja klõpsake loodud index.html lehel nuppu "Kronoloogiline vaade".

Parameetrid

Kui soovite, et meetodid täidetaks teises järjekorras, kasutage parameetrit "prioriteet". Parameetrid on märksõnad, mis muudavad märkuse funktsiooni .

  • Parameetrid nõuavad, et määraksite neile väärtuse. Teete seda. Pange nende kõrvale ja seejärel väärtus.
  • Parameetrid on suletud paari sulgudesse, mis asetatakse kohe pärast märkust nagu allpool näidatud koodijupp.

TestNG täidab märkuse @Test madalaima prioriteediväärtusega kuni suurima väärtuseni. Teie prioriteetsed väärtused ei pea olema järjestikused.

TestNG HTML-i aruanne kinnitab, et meetodid käivitati prioriteedi tõusva väärtuse põhjal.

Mitu parameetrit

Lisaks prioriteedile on @Testil veel üks parameeter nimega "alwaysRun", mille saab määrata ainult kas "true" või "false". Kahe või enama parameetri kasutamiseks ühes märkuses eraldage need komaga , nagu allpool näidatud.

@Test (prioriteet = 0, alwaysRun = true)

@BeforeTest ja @AfterTest

@BeforeTest

Selle märkuse all olevad meetodid käivitatakse enne testNG-faili esimest testimisjuhtu .

@AfterTest

Selle märkuse all olevad meetodid käivitatakse pärast kõigi TestNG-faili testjuhtumite täitmist .

Mõelge allolevale koodile.

pakett firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.nototations. *;avalik klass firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";avalik WebDriveri draiver;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefoxi brauseri käivitamine");System.setProperty ("webdriver.gecko.driver", driverPath);draiver = uus FirefoxDriver ();draiver.get (baseUrl);}@Testpublic void verifyHomepageTitle () {String eeldatavTitle = "Tere tulemast: Merkuuri tuurid";String actualTitle = draiver.getTitle ();Assert.assertEquals (tegelikTitle, eeldatavTitle);}@AfterTestpublic void terminateBrowser () {juht.sule ();}}

Rakendades tabeli esitatud loogikat ja ülaltoodud koodi, võime ennustada, et meetodite käivitamise järjestus on:

  • 1. s - launchBrowser ()
  • 2 nd - verifyHomepageTitle ()
  • 3 rd - terminateBrowser ()

Annotatsiooniplokkide paigutust saab vahetada, ilma et see mõjutaks nende täitmise ajalist järjestust . Mõelgem sellest TestNG näite abil ja proovige märkimisteribasid ümber korraldada nii, et teie kood näeks välja sarnane allolevaga.

pakett firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.nototations. *;avalik klass firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";avalik WebDriveri draiver;@AfterTest // segipublic void terminateBrowser () {juht.sule ();}@BeforeTest // segipublic void launchBrowser () {System.out.println ("Firefoxi brauseri käivitamine");System.setProperty ("webdriver.gecko.driver", driverPath);draiver = uus FirefoxDriver ();draiver.get (baseUrl);}@Test // Jumbledpublic void verifyHomepageTitle () {String eeldatavTitle = "Tere tulemast: Merkuuri tuurid";String actualTitle = draiver.getTitle ();Assert.assertEquals (tegelikTitle, eeldatavTitle);}}

Käivitage ülaltoodud kood ja märkage seda

@BeforeMethod ja @AfterMethod

@BeforeMethod

selle märkuse all olevad meetodid viiakse läbi enne iga meetodi kasutamist igas testjuhtumis .

@AfterMethod

Selle kommentaari all olevad meetodid käivitatakse igas testijuhtumis iga meetodi järel.

Oletagem, et meile meeldib Mercury Toursis kontrollida kahe alloleva lingi sihtlehtede pealkirju.

Meie testi voog oleks järgmine:

  • Minge avalehele ja kontrollige selle pealkirja.
  • Klõpsake REGISTREERI ja kontrollige selle sihtlehe pealkirja.
  • Minge tagasi avalehele ja kontrollige, kas sellel on ikka õige pealkiri.
  • Klõpsake TUGI ja kontrollige selle sihtlehe pealkirja.
  • Minge tagasi avalehele ja kontrollige, kas sellel on ikka õige pealkiri.

Allolev kood illustreerib, kuidas @BeforeMethod ja @AfterMethod kasutatakse ülalnimetatud stsenaariumi tõhusaks elluviimiseks.

pakett firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.nototations. *;@Testavalik klass firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";avalik WebDriveri draiver;public String eeldatav = null;avalik string tegelik = null;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefoxi brauseri käivitamine");System.setProperty ("webdriver.gecko.driver", driverPath);draiver = uus FirefoxDriver ();draiver.get (baseUrl);}@BeforeMethodpublic void verifyHomepageTitle () {String eeldatavTitle = "Tere tulemast: Merkuuri tuurid";String actualTitle = draiver.getTitle ();Assert.assertEquals (tegelikTitle, eeldatavTitle);}@Test (prioriteet = 0)avalik void register () {driver.findElement (By.linkText ("REGISTREERU")). klõpsake ();eeldatav = "Registreeru: Mercury Tours";tegelik = draiver.getTitle ();Assert.assertEquals (tegelik, eeldatav);}@Test (prioriteet = 1)avaliku tühine tugi () {driver.findElement (By.linkText ("SUPPORT")). klõpsake ();eeldatav = "Ehitamisel: Merkuuri tuurid";tegelik = draiver.getTitle ();Assert.assertEquals (tegelik, eeldatav);}@AfterMethodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Kodu")). klõpsake ();}@AfterTestpublic void terminateBrowser () {juht.sule ();}}

Pärast selle testi tegemist peaks TestNG teatama järgmisest järjestusest.

Lihtsamalt öeldes peaks @BeforeMethod sisaldama meetodeid, mida peate käivitama enne igat testijuhtu, samas kui @AfterMethod peaks sisaldama meetodeid, mida peate käivitama pärast iga testjuhtumit.

TestNG märkuste kokkuvõte

@BeforeSuite : Kommenteeritud meetod käivitatakse enne, kui kõik selle komplekti testid on käivitatud.

@AfterSuite : Kommenteeritud meetod käivitatakse pärast seda, kui kõik selles komplektis olevad testid on käivitatud.

@BeforeTest : Kommenteeritud meetod käivitatakse enne kõigi siltis olevate klasside testimismeetodite käitamist.

@AfterTest : Kommenteeritud meetod käivitatakse pärast seda, kui kõik sildis sees olevatesse klassidesse kuuluvad katsemeetodid on käivitatud.

@BeforeGroups : loend rühmadest, mida see konfiguratsioonimeetod enne käitab. Selle meetodi käivitamine on tagatud vahetult enne esimest nendesse rühmadesse kuuluva katsemeetodi kasutamist.

@AfterGroups : rühmade loend, mida pärast seda konfiguratsioonimeetodit käivitatakse. See meetod töötab garanteeritult varsti pärast viimast katsemeetodi kasutamist, mis kuulub nendesse rühmadesse.

@BeforeClass : Kommenteeritud meetod käivitatakse enne praeguse klassi esimese katsemeetodi kasutamist.

@AfterClass : Kommenteeritud meetod käivitatakse pärast kõigi praeguse klassi katsemeetodite käitamist.

@BeforeMethod : Kommenteeritud meetod käivitatakse enne iga katsemeetodit.

@AfterMethod : kommenteeritud meetod käivitatakse pärast iga katsemeetodit.

@Test : kommenteeritud meetod on testjuhtumi osa

Järeldus

  • TestNG on testimisraamistik, mis võimaldab muuta seleenitestid hõlpsamini mõistetavaks ja luua aruandeid, mis on hõlpsasti mõistetavad.
  • TestNG peamised eelised JUniti ees on järgmised.
    • Kommentaare on lihtsam kasutada ja neist on lihtsam aru saada.
    • Testjuhtumeid saab hõlpsamini rühmitada.
    • TestNG võimaldab meil luua paralleelseid teste.
  • Eclipse'i konsooli aken genereerib tekstipõhise tulemuse, samas kui aken TestNG on kasulikum, kuna see annab meile testitulemuse graafilise väljundi ja muud olulised üksikasjad, näiteks:
    • Iga meetodi käitusajad.
    • Meetodite teostamise kronoloogiline järjekord
  • TestNG on võimeline genereerima HTML-põhiseid aruandeid.
  • Kommentaarid võivad kasutada parameetreid nagu tavalised Java TestNG meetodid.
  • TestNG Dataprovider on viis parameetrite edastamiseks testfunktsioonile, mis edastab testimise korral erinevad väärtused ühe teostusena.