„TestNG“ mokymo programa: kas yra anotacijos ir amp; Pagrindai selene

Turinys:

Anonim

Kas yra TestNG?

„TestNG“ yra automatikos testavimo sistema, kurioje NG reiškia „Next Generation“. „TestNG“ yra įkvėptas „JUnit“, kuris naudoja anotacijas (@). „TestNG“ įveikia „JUnit“ trūkumus ir yra sukurtas taip, kad būtų lengva atlikti testavimą nuo galo iki galo.

Naudodami „TestNG“ galite sukurti tinkamą ataskaitą ir lengvai sužinoti, kiek bandymų atvejų yra išlaikyta, nepavyko ir praleista. Nepavykusius bandymo atvejus galite vykdyti atskirai.

Pavyzdžiui:

  • Tarkime, kad turite penkis bandymo atvejus, kiekvienam bandymo atvejui parašomas vienas metodas (Tarkime, kad programa parašyta naudojant pagrindinį metodą nenaudojant testNG). Kai pirmą kartą paleidžiate šią programą, trys metodai sėkmingai vykdomi, o ketvirtasis metodas nepavyksta. Tada ištaisykite ketvirtojo metodo klaidas, dabar norite paleisti tik ketvirtąjį metodą, nes pirmieji trys metodai vis tiek sėkmingai vykdomi. Tai neįmanoma nenaudojant TestNG.
  • „SelNium“ esantis „TestNG“ suteikia parinktį, ty failą „testng-fail.xml“ bandymo išvesties aplanke. Jei norite paleisti tik nepavykusius bandymo atvejus, tai reiškia, kad naudojate šį XML failą. Ji vykdys tik nepavykusius bandymo atvejus.

Šalia pirmiau pateiktos koncepcijos sužinosite daugiau apie „TestNG“, pvz., Kokie yra „TestNG“ pranašumai, kaip sukurti bandymo metodus naudojant „@test“ anotacijas, kaip šias klases paversti testavimo rinkinio failais ir vykdyti per užtemimą, taip pat iš komandinės eilutės .

Šioje „TestNG“ pamokoje sužinosite

  • Kodėl verta naudoti TestNG kartu su selenu?
  • TestNG pranašumai prieš JUnit
  • Sukurkite bandomąjį atvejį naudodami „TestNG“ anotacijas
  • Kaip sukurti naują TestNG bandymo failą
    • Pirmojo „TestNG“ bandymo atvejo pavyzdžio kodavimas
    • Testo vykdymas
  • Tikrinama „TestNG“ sukurta ataskaita
  • TestNG naudojamos anotacijos
  • Keli bandymo atvejai
  • Parametrai
    • Keli parametrai
    • TestNG anotacijų santrauka

Kodėl verta naudoti TestNG kartu su selenu?

Numatytieji seleno testai nesukuria tinkamo bandymo rezultatų formato. Naudodami „TestNG Selenium“, galime sukurti bandymų rezultatus.

Daugelis „Selenium“ vartotojų tai naudoja daugiau nei „Junit“ dėl savo pranašumų. Yra tiek daug „TestNG“ funkcijų, tačiau mes sutelksime dėmesį tik į svarbiausias, kurias galime naudoti „Selenium“. Toliau pateikiamos pagrindinės „Selenium TestNG“ savybės:

  • Sugeneruokite ataskaitą tinkamu formatu, įtraukdami kelis bandymų atvejus, atliktų bandymų skaičių, nepavykusių bandymų atvejų skaičių ir praleistų bandymų skaičių.
  • Keli bandomieji atvejai gali būti lengviau sugrupuoti paverčiant juos į failą testng.xml. Kurioje byloje galite nustatyti prioritetus, kuris bandymo atvejis turėtų būti įvykdytas pirmiausia.
  • Tą patį bandymo atvejį galima atlikti kelis kartus be kilpų, naudojant tik raktinį žodį, vadinamą „iškvietimų skaičius“.
  • Naudodami testng galite atlikti kelis bandymo atvejus keliose naršyklėse, ty atlikti kryžminį naršyklės testavimą.
  • „TestNG“ sistemą galima lengvai integruoti su tokiais įrankiais kaip „TestNG Maven“, „Jenkins“ ir kt.
  • Testavime naudojamas anotacijas labai lengva suprasti, pvz .: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • „WebDriver“ neturi įprasto ataskaitų generavimo mechanizmo. „TestNG“ gali sugeneruoti ataskaitą tokiu skaitomu formatu, kaip parodyta toliau.
  • „TestNG“ supaprastina testų kodavimą. Mūsų bandymuose nebereikia statinio pagrindinio metodo. Veiksmų seką reguliuoja lengvai suprantamos anotacijos, kurioms nereikia, kad metodai būtų statiški.
  • Negautas išimtis „TestNG“ automatiškai tvarko nenutraukdamas bandymo anksčiau laiko. Šios išimtys ataskaitoje nurodomos kaip nepavykę veiksmai.

TestNG pranašumai prieš JUnit

Yra trys pagrindiniai „TestNG“ pranašumai, palyginti su „JUnit“:

  • Anotacijas lengviau suprasti
  • Testinius atvejus galima lengviau sugrupuoti
  • Lygiagretus bandymas yra įmanomas

„TestNG“ anotacijos yra kodo eilutės, kurios gali kontroliuoti, kaip bus vykdomas žemiau esantis metodas . Prieš juos visada yra simbolis @. Labai ankstyvas ir greitas „TestNG“ pavyzdys parodytas žemiau.

Anotacijos bus aptariamos vėliau skyriuje pavadinimu „Anotacijos, naudojamos TestNG“, todėl visiškai gerai, jei dar nesuprantate aukščiau pateikto TestNG pavyzdžio. Šiuo metu svarbu atkreipti dėmesį į tai, kad „TestNG“ anotacijas lengviau koduoti ir suprasti nei „JUnit“.

Galimybė lygiagrečiai vykdyti testus yra prieinama „TestNG“, bet ne „JUnit“, todėl „TestNG“ sistema labiau patinka bandytojams, naudojantiems „Selenium Grid“.

Sukurkite bandomąjį atvejį naudodami „TestNG“ anotacijas

Dabar sužinosime, kaip sukurti pirmąjį bandomąjį atvejį naudojant „SelNium“ „TestNG“ anotacijas:

Prieš kurdami bandomąjį atvejį, pirmiausia turėtume nustatyti naują „TestNG“ projektą „Eclipse“ ir pavadinti jį „FirstTestNGProject“.

Naujo „TestNG“ projekto nustatymas

1 žingsnis: Spustelėkite Failas> Naujas> „Java“ projektas

2 žingsnis: Įveskite „FirstTestNGProject“ kaip projekto pavadinimą, tada spustelėkite Pirmyn.

3 žingsnis: Dabar pradėsime importuoti „TestNG“ bibliotekas į savo projektą. Spustelėkite skirtuką „Bibliotekos“, tada - „Pridėti biblioteką“

… "

4 žingsnis: Dialogo lange Pridėti biblioteką pasirinkite „TestNG“ ir spustelėkite Pirmyn.

5 veiksmas: spustelėkite Baigti.

Turėtumėte pastebėti, kad „TestNG“ yra įtraukta į bibliotekų sąrašą.

6 žingsnis: Dabar pridėsime JAR failus, kuriuose yra „Selenium“ API. Šie failai yra „Java“ kliento tvarkyklėje, kurią atsisiuntėme iš http://docs.seleniumhq.org/download/, kai ankstesniuose skyriuose diegėme „Selenium“ ir „Eclipse“.

Tada eikite į vietą, kurioje įdėjote „Selenium JAR“ failus.

Pridėjus išorinius JAR, jūsų ekranas turėtų atrodyti taip.

7 žingsnis: Spustelėkite Baigti ir patikrinkite, ar „FirstTestNGProject“ yra matomas „Eclipse“ paketų naršyklės lange.

Kaip sukurti naują TestNG bandymo failą

Dabar, kai baigėme nustatyti savo projektą šioje „TestNG“ pamokoje, sukurkime naują „TestNG“ failą.

1 žingsnis: Dešiniuoju pelės mygtuku spustelėkite paketo aplanką „src“, tada pasirinkite Naujas> Kitas

2 žingsnis: Spustelėkite aplanką TestNG ir pasirinkite parinktį „TestNG klasė“. Spustelėkite Pirmyn.

3 žingsnis: Įveskite toliau nurodytas reikšmes atitinkamuose įvesties laukeliuose ir spustelėkite Baigti. Atkreipkite dėmesį, kad savo „Java“ failą pavadinome „FirstTestNGFile“.

„Eclipse“ turėtų automatiškai sukurti mūsų „TestNG“ failo šabloną, parodytą žemiau.

Pirmojo „TestNG“ bandymo atvejo pavyzdžio kodavimas

Dabar sukurkime savo pirmąjį bandymo atvejį, kuris patikrins, ar „Mercury Tours“ tinklapis yra teisingas. Įveskite savo kodą, kaip parodyta toliau pateiktame TestNG pavyzdyje:

paketas firsttestngpackage;importuoti org.openqa.selenium. *;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.Assert;importuoti org.testng.nototations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";viešasis „WebDriver“ tvarkyklė;@Testpublic void verifyHomepageTitle () {System.out.println („paleidžiama„ Firefox “naršyklė“);System.setProperty ("webdriver.gecko.driver", driverPath);tvarkyklė = new FirefoxDriver ();vairuotojas.get (baseUrl);String expectedTitle = "Sveiki atvykę: Mercury Tours ";String actualTitle = tvarkyklė.getTitle ();„Assert.assertEquals“ (tikrasis pavadinimas, laukiamas pavadinimas);vairuotojas.uždaryti ();}}

Atkreipkite dėmesį į šiuos dalykus.

  • „TestNG“ nereikalauja turėti pagrindinio () metodo.
  • Metodai neturi būti statiški.
  • Naudojome „@Test“ anotaciją. @Test naudojamas norint pasakyti, kad pagal jį pateiktas metodas yra bandomasis atvejis . Šiuo atveju mes patikrinimo atveju nustatėme metodą „VerifyHomepageTitle ()“, todėl virš jo įdėjome „@Test“ anotaciją.
  • Kadangi „TestNG“ naudojame anotacijas, turėjome importuoti paketą org.testng.annotations. *.
  • Mes naudojome „Assert“ klasę. „Assert“ klasė naudojama tikrinimo operacijoms atlikti „TestNG“ . Norėdami jį naudoti, turime importuoti paketą org.testng.Assert.

Viename „TestNG“ faile galite turėti kelis bandymo atvejus (todėl kelias „@Test“ anotacijas). Tai bus išsamiau aptarta vėliau skyriuje „Anotacijos, naudojamos„ TestNG “.

Testo vykdymas

Norėdami paleisti testą, paprasčiausiai paleiskite failą „Eclipse“, kaip įprasta. „Eclipse“ suteiks du išėjimus - vieną lange „Konsolė“, kitą - lange „TestNG rezultatai“.

Tikrinama „TestNG“ sukurta ataskaita

„Eclipse“ konsolės lange pateikiama tekstinė mūsų bandymų rezultatų ataskaita, o „TestNG Rezultatų“ lange pateikiama grafinė.

HTML ataskaitų generavimas

„TestNG“ turi galimybę generuoti ataskaitas HTML formatu.

1 žingsnis: Paleidus mūsų „FirstTestNGFile“, kurį sukūrėme ankstesniame skyriuje, dešiniuoju pelės mygtuku spustelėkite projekto pavadinimą (FirstTestNGProject) „Project Explorer“ lange, tada spustelėkite parinktį „Atnaujinti“.

2 žingsnis: atkreipkite dėmesį, kad buvo sukurtas aplankas „test-output“. Išplėskite jį ir ieškokite failo index.html. Šis HTML failas yra paskutinio bandymo rezultatų ataskaita.

3 žingsnis: dukart spustelėkite tą index.html failą, kad atidarytumėte jį „Eclipse“ integruotoje žiniatinklio naršyklėje. Galite atnaujinti šį puslapį bet kada, kai pakartosite testą, tiesiog paspausdami F5, kaip ir įprastose interneto naršyklėse.

TestNG naudojamos anotacijos

Ankstesniame skyriuje buvote supažindintas su @Tot komentaru. Dabar mes studijuosime pažangesnes anotacijas ir jų naudojimą.

Keli bandymo atvejai

Viename TestNG faile galime naudoti kelias @Test anotacijas. Pagal numatytuosius nustatymus @Test komentuojami metodai vykdomi abėcėlės tvarka. Žiūrėkite žemiau esantį kodą. Nors k_test, a_test ir b_test metodai kode nėra išdėstyti abėcėlės tvarka, jie bus vykdomi kaip tokie.

Paleiskite šį kodą ir sugeneruotame index.html puslapyje spustelėkite „Chronologinis rodinys“.

Parametrai

Jei norite, kad metodai būtų vykdomi kita tvarka, naudokite parametrą „prioritetas“. Parametrai yra raktiniai žodžiai, modifikuojantys anotacijos funkciją .

  • Parametrai reikalauja priskirti jiems vertę. Jūs darote.tai šalia jų pridėdami „=“, tada nurodydami vertę.
  • Parametrai pridedami prie skliaustų, kurie dedami iškart po anotacijos, pavyzdžiui, žemiau pateiktas kodo fragmentas.

„TestNG“ vykdys „@Test“ anotaciją su mažiausiąja prioriteto verte iki didžiausios. Nereikia, kad jūsų prioritetinės vertės būtų iš eilės.

TestNG HTML ataskaita patvirtins, kad metodai buvo vykdomi pagal didėjančią prioriteto vertę.

Keli parametrai

Be „prioriteto“, „@Test“ turi dar vieną parametrą, vadinamą „alwaysRun“, kurį galima nustatyti tik į „true“ arba „false“. Jei norite naudoti du ar daugiau parametrų vienoje anotacijoje, atskirkite juos kableliu, tokiu, koks parodyta žemiau.

@Test (prioritetas = 0, alwaysRun = true)

@BeforeTest ir @AfterTest

@BeforeTest

metodai pagal šią anotaciją bus vykdomi prieš pirmą bandymo atvejį „TestNG“ faile .

@AfterTest

metodai pagal šią anotaciją bus vykdomi atlikus visus bandymo atvejus faile TestNG .

Apsvarstykite toliau pateiktą kodą.

paketas firsttestngpackage;importuoti org.openqa.selenium. *;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.Assert;importuoti org.testng.nototations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";viešasis „WebDriver“ tvarkyklė;@BeforeTestpublic void launchBrowser () {System.out.println („paleidžiama„ Firefox “naršyklė“);System.setProperty ("webdriver.gecko.driver", driverPath);tvarkyklė = new FirefoxDriver ();vairuotojas.get (baseUrl);}@Testpublic void verifyHomepageTitle () {String expectedTitle = "Sveiki atvykę: Mercury Tours ";String actualTitle = tvarkyklė.getTitle ();„Assert.assertEquals“ (tikrasis pavadinimas, laukiamas pavadinimas);}@AfterTestpublic void terminateBrowser () {vairuotojas.uždaryti ();}}

Taikydami lentelės pateiktą logiką ir aukščiau esantį kodą, galime numatyti, kad metodų vykdymo seka yra:

  • 1 st. - „launchBrowser“ ()
  • 2 -asis - patikrinkiteHomepageTitle ()
  • 3 -oji - nutraukti Naršyklė ()

Anotacinių blokų vietą galima pakeisti, nedarant įtakos chronologinei jų vykdymo tvarkai . Supraskime naudodami „TestNG“ pavyzdį ir pabandykite pertvarkyti komentarų blokus taip, kad jūsų kodas atrodytų panašus į žemiau pateiktą.

paketas firsttestngpackage;importuoti org.openqa.selenium. *;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.Assert;importuoti org.testng.nototations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";viešasis „WebDriver“ tvarkyklė;@AfterTest // Maišytapublic void terminateBrowser () {vairuotojas.uždaryti ();}@BeforeTest // Maišytapublic void launchBrowser () {System.out.println („paleidžiama„ Firefox “naršyklė“);System.setProperty ("webdriver.gecko.driver", driverPath);tvarkyklė = new FirefoxDriver ();vairuotojas.get (baseUrl);}@Testas // Sukrutapublic void verifyHomepageTitle () {String expectedTitle = "Sveiki atvykę: Mercury Tours ";String actualTitle = tvarkyklė.getTitle ();„Assert.assertEquals“ (tikrasis pavadinimas, laukiamas pavadinimas);}}

Paleiskite aukščiau esantį kodą ir pastebėkite tai

@BeforeMethod ir @AfterMethod

@BeforeMethod

metodai pagal šią anotaciją bus atliekami prieš kiekvieną metodą kiekvienu bandymo atveju .

@PoMetodas

metodai pagal šią anotaciją bus vykdomi po kiekvieno metodo kiekvienu bandymo atveju.

„Mercury Tours“ tarkime, kad mes norėtume patikrinti dviejų toliau pateiktų nuorodų tikslinių puslapių pavadinimus.

Mūsų bandymo srautas būtų:

  • Eikite į pagrindinį puslapį ir patikrinkite jo pavadinimą.
  • Spustelėkite REGISTRUOTIS ir patikrinkite jo tikslinio puslapio pavadinimą.
  • Grįžkite į pagrindinį puslapį ir patikrinkite, ar jo pavadinimas vis dar teisingas.
  • Spustelėkite PALAIKYTI ir patikrinkite jo tikslinio puslapio pavadinimą.
  • Grįžkite į pagrindinį puslapį ir patikrinkite, ar jo pavadinimas vis dar teisingas.

Žemiau pateiktas kodas iliustruoja, kaip @BeforeMethod ir @AfterMethod yra naudojamos efektyviai įvykdyti aukščiau paminėtą scenarijų.

paketas firsttestngpackage;importuoti org.openqa.selenium. *;importuoti org.openqa.selenium.firefox.FirefoxDriver;importuoti org.testng.Assert;importuoti org.testng.nototations. *;@Testpublic class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";viešasis „WebDriver“ tvarkyklė;numatoma viešoji eilutė = nulis;public String actual = null;@BeforeTestpublic void launchBrowser () {System.out.println („paleidžiama„ Firefox “naršyklė“);System.setProperty ("webdriver.gecko.driver", driverPath);tvarkyklė = new FirefoxDriver ();vairuotojas.get (baseUrl);}@BeforeMethodpublic void verifyHomepageTitle () {String expectedTitle = "Sveiki atvykę: Mercury Tours ";String actualTitle = tvarkyklė.getTitle ();„Assert.assertEquals“ (tikrasis pavadinimas, laukiamas pavadinimas);}@Test (prioritetas = 0)viešas negaliojančių registras () {driver.findElement (By.linkText ("REGISTRUOTIS")). spustelėkite ();numatomas = "Registruotis: Mercury Tours ";tikrasis = vairuotojas.getTitle ();„Assert.assertEquals“ (faktinis, numatomas);}@Test (prioritetas = 1)vieša niekinė parama () {driver.findElement (By.linkText ("PALAIKYMAS")). spustelėkite ();numatomas = "Statomas: Mercury Tours ";tikrasis = vairuotojas.getTitle ();„Assert.assertEquals“ (faktinis, numatomas);}@PoMetodaspublic void goBackToHomepage () {driver.findElement (By.linkText ("Pagrindinis")). spustelėkite ();}@AfterTestpublic void terminateBrowser () {vairuotojas.uždaryti ();}}

Atlikęs šį testą, „TestNG“ turėtų pateikti šią seką.

Paprasčiau tariant, @BeforeMethod turėtų būti metodai, kuriuos turite paleisti prieš kiekvieną bandymo atvejį, o @AfterMethod turėtų būti metodai, kuriuos turite paleisti po kiekvieno bandymo atvejo.

TestNG anotacijų santrauka

@BeforeSuite : Anotuotas metodas bus paleistas, kol nebus atlikti visi šio rinkinio bandymai.

@AfterSuite : Anotuotas metodas bus paleistas paleidus visus šio rinkinio bandymus.

@BeforeTest : Anotuotas metodas bus paleistas prieš paleidžiant bet kurį žymos viduje esančioms klasėms priklausantį bandymo metodą.

@AfterTest : Anotuotas metodas bus vykdomas paleidus visus bandymo metodus, priklausančius žymos viduje esančioms klasėms.

@BeforeGroups : Grupių, kurias anksčiau vykdys šis konfigūravimo metodas, sąrašas. Garantuojama, kad šis metodas bus paleistas netrukus prieš pradedant taikyti pirmąjį bet kuriai iš šių grupių bandymo metodą.

@AfterGroups : Grupių, kurioms bus paleistas šis konfigūravimo metodas, sąrašas. Garantuojama, kad šis metodas bus paleistas netrukus po to, kai bus panaudotas paskutinis bet kuriai iš šių grupių priklausantis bandymo metodas.

@BeforeClass : Anotuotas metodas bus vykdomas prieš pradedant naudoti pirmąjį dabartinės klasės bandymo metodą.

@AfterClass : Anotuotas metodas bus paleistas paleidus visus dabartinės klasės bandymo metodus.

@BeforeMethod : Anotuotas metodas bus vykdomas prieš kiekvieną bandymo metodą.

@AfterMethod : Anotuotas metodas bus vykdomas po kiekvieno bandymo metodo.

@Test : Anotuotas metodas yra bandomojo atvejo dalis

Išvada

  • „TestNG“ yra testavimo sistema, leidžianti lengviau suprasti seleno testus ir generuoti lengvai suprantamas ataskaitas.
  • Pagrindiniai „TestNG“ pranašumai, palyginti su „JUnit“, yra šie.
    • Anotacijas lengviau naudoti ir suprasti.
    • Testinius atvejus galima lengviau sugrupuoti.
    • „TestNG“ leidžia mums sukurti lygiagrečius testus.
  • „Eclipse“ konsolės lange generuojamas teksto rezultatas, o „TestNG“ langas yra naudingesnis, nes jis suteikia mums grafinę bandymo rezultato ir kitos reikšmingos informacijos, tokios kaip:
    • Kiekvieno metodo veikimo laikas.
    • Chronologinė metodų vykdymo tvarka
  • „TestNG“ gali sukurti HTML pagrįstas ataskaitas.
  • Anotacijose parametrai gali būti naudojami kaip ir įprasti „Java TestNG“ metodai.
  • „TestNG Dataprovider“ yra būdas perkelti parametrus į bandymo funkciją, kuris vienu metu paleidžia skirtingas reikšmes bandymų atvejais.