Kas ir TestNG?
TestNG ir automatizācijas testēšanas sistēma, kurā NG nozīmē "Nākamā paaudze". TestNG ir iedvesmots no JUnit, kas izmanto anotācijas (@). TestNG pārvar JUnit trūkumus un ir izveidots tā, lai atvieglotu testēšanu no gala līdz galam.
Izmantojot TestNG, varat izveidot pareizu pārskatu, un jūs viegli varat uzzināt, cik testa gadījumu ir izturēts, neizdevies un izlaists. Neveiksmīgos testa gadījumus varat izpildīt atsevišķi.
Piemēram:
- Pieņemsim, ka jums ir pieci testa gadījumi, katram testa gadījumam tiek rakstīta viena metode (Pieņemsim, ka programma ir rakstīta, izmantojot galveno metodi, neizmantojot testNG). Vispirms palaižot šo programmu, trīs metodes tiek veiksmīgi izpildītas, un ceturtā metode ir neizdevusies. Tad izlabojiet ceturtajā metodē esošās kļūdas, tagad vēlaties palaist tikai ceturto metodi, jo pirmās trīs metodes tik un tā tiek veiksmīgi izpildītas. Tas nav iespējams, neizmantojot TestNG.
- TestNG selēnā nodrošina opciju, ti, failu testng-fail.xml testa izvades mapē. Ja vēlaties palaist tikai neizdevušos testa gadījumus, tas nozīmē, ka palaižat šo XML failu. Tas izpildīs tikai neveiksmīgas pārbaudes lietas.
Blakus iepriekš minētajai koncepcijai jūs uzzināsiet vairāk par TestNG, piemēram, kādas ir TestNG priekšrocības, kā izveidot testa metodes, izmantojot @tot anotācijas, kā pārvērst šīs klases testēšanas komplekta failā un izpildīt, izmantojot aptumsumu, kā arī no komandrindas .
Šajā TestNG apmācībā jūs uzzināsiet
- Kāpēc lietot TestNG kopā ar selēnu?
- TestNG priekšrocības salīdzinājumā ar JUnit
- Izveidojiet testa gadījumu, izmantojot TestNG anotācijas
- Kā izveidot jaunu TestNG testa failu
- Mūsu pirmā TestNG testa gadījuma piemēra kodēšana
- Pārbaudes veikšana
- Pārbauda TestNG izveidotos pārskatus
- TestNG izmantotās anotācijas
- Vairāki testa gadījumi
- Parametri
- Vairāki parametri
- TestNG anotāciju kopsavilkums
Kāpēc lietot TestNG kopā ar selēnu?
Noklusētie selēna testi nerada pareizu testa rezultātu formātu. Izmantojot TestNG selēnā, mēs varam ģenerēt testa rezultātus.
Lielākā daļa Selenium lietotāju to izmanto vairāk nekā Junit tā priekšrocību dēļ. TestNG ir tik daudz funkciju, taču mēs koncentrēsimies tikai uz vissvarīgākajām, kuras mēs varam izmantot Selenium. Šīs ir Selenium TestNG galvenās iezīmes:
- Ģenerējiet ziņojumu pareizā formātā, iekļaujot vairākus testu gadījumus, izturēto testu skaitu, neizdevušos testu skaitu un izlaisto testu skaitu.
- Vairākus testa gadījumus var vieglāk sagrupēt, pārveidojot tos failā testng.xml. Kurā gadījumā jūs varat noteikt prioritātes, kurš testa gadījums vispirms jāizpilda.
- Vienu un to pašu testa gadījumu var izpildīt vairākas reizes bez cilpām, tikai izmantojot atslēgvārdu “izsaukumu skaits”.
- Izmantojot testng, jūs varat izpildīt vairākus testa gadījumus vairākās pārlūkprogrammās, ti, veikt pārlūka testēšanu.
- TestNG ietvaru var viegli integrēt ar tādiem rīkiem kā TestNG Maven, Jenkins utt.
- Testēšanā izmantotās anotācijas ir ļoti viegli saprotamas, piemēram: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
- WebDriver nav vietēja pārskatu ģenerēšanas mehānisma. TestNG var ģenerēt pārskatu lasāmā formātā, kā parādīts zemāk.
- TestNG vienkāršo testu kodēšanu. Mūsu testos vairs nav vajadzīga statiska galvenā metode. Darbību secību regulē viegli saprotamas anotācijas, kurām nav nepieciešamas metodes, lai būtu statiskas.
- Neuzķertos izņēmumus TestNG automātiski apstrādā, pārtraucot testu priekšlaicīgi. Par šiem izņēmumiem ziņojumā tiek ziņots par neveiksmīgām darbībām.
TestNG priekšrocības salīdzinājumā ar JUnit
TestNG ir trīs galvenās priekšrocības salīdzinājumā ar JUnit:
- Anotācijas ir vieglāk saprotamas
- Testa gadījumus var vieglāk sagrupēt
- Iespējama paralēla pārbaude
TestNG anotācijas ir koda rindas, kas var kontrolēt, kā tiks izpildīta zem tām esošā metode . Pirms tiem vienmēr ir simbols @. Ļoti agrs un ātrs TestNG piemērs ir parādīts zemāk.
Anotācijas tiks aplūkotas vēlāk sadaļā ar nosaukumu “TestNG izmantotās anotācijas”, tāpēc ir pilnīgi labi, ja jūs vēl nesaprotat iepriekš minēto TestNG piemēru. Pašlaik ir tikai svarīgi atzīmēt, ka TestNG anotācijas ir vieglāk kodēt un saprast nekā JUnit.
Spēja paralēli veikt testus ir pieejama TestNG, bet ne JUnit, tāpēc TestNG ietvars ir vēlams testētājiem, kuri izmanto Selenium Grid.
Izveidojiet testa gadījumu, izmantojot TestNG anotācijas
Tagad mēs iemācīsimies izveidot savu pirmo testa gadījumu, izmantojot TestNG anotācijas selēnā:
Pirms testa gadījuma izveidošanas vispirms Eclipse jāiestata jauns TestNG projekts un jānosauc tas kā "FirstTestNGProject".
Jauna TestNG projekta iestatīšana
1. solis: noklikšķiniet uz Fails> Jauns> Java projekts
2. darbība: ierakstiet “FirstTestNGProject” kā projekta nosaukumu, pēc tam noklikšķiniet uz Tālāk.
3. solis: Tagad mēs sāksim importēt TestNG bibliotēkas savā projektā. Noklikšķiniet uz cilnes "Bibliotēkas" un pēc tam uz "Pievienot bibliotēku
… "4. solis: Dialoglodziņā Pievienot bibliotēku izvēlieties "TestNG" un noklikšķiniet uz Tālāk.
5. darbība: noklikšķiniet uz Pabeigt.
Jums vajadzētu pamanīt, ka TestNG ir iekļauts bibliotēku sarakstā.
6. solis: Tagad mēs pievienosim JAR failus, kas satur Selenium API. Šie faili ir atrodami Java klienta draiverī, ko lejupielādējām no vietnes http://docs.seleniumhq.org/download/, kad iepriekšējās nodaļās instalējām Selenium un Eclipse.
Pēc tam dodieties uz vietu, kur esat ievietojis Selenium JAR failus.
Pēc ārējo JAR pievienošanas ekrānam vajadzētu izskatīties šādi.
7. solis: Noklikšķiniet uz Pabeigt un pārbaudiet, vai Eclipse Package Explorer logā ir redzams mūsu FirstTestNGProject.
Kā izveidot jaunu TestNG testa failu
Tagad, kad šajā TestNG apmācībā esam iestatījuši savu projektu, izveidosim jaunu TestNG failu.
1. solis: Ar peles labo pogu noklikšķiniet uz pakotnes mapes "src", pēc tam izvēlieties Jauns> Cits
…2. solis: Noklikšķiniet uz mapes TestNG un atlasiet opciju "TestNG klase". Noklikšķiniet uz Tālāk.
3. darbība: ierakstiet zemāk norādītās vērtības attiecīgajos ievades lodziņos un noklikšķiniet uz Pabeigt. Ievērojiet, ka mēs esam nosaukuši mūsu Java failu kā "FirstTestNGFile".
Eclipse vajadzētu automātiski izveidot veidni mūsu TestNG failam, kas parādīts zemāk.
Mūsu pirmā TestNG testa gadījuma piemēra kodēšana
Tagad izveidosim savu pirmo testa gadījumu, kas pārbaudīs, vai Mercury Tours mājas lapa ir pareiza. Ierakstiet kodu, kā parādīts zemāk esošajā TestNG piemērā:
pakete firsttestngpackage;importa org.openqa.selenium. *;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.Assert;importēt org.testng.notot. *;public class firsttestngfile {publiskā virkņu bāzeUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";publiskais WebDriver draiveris;@Pārbaudepublic void verifyHomepageTitle () {System.out.println ("Firefox pārlūka palaišana");System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);String várhatóTitle = "Laipni lūdzam: Mercury Tours";String actualTitle = draiveris.getTitle ();Assert.assertEquals (faktiskais nosaukums, paredzamais nosaukums);vadītājs.slēgt ();}}
Ievērojiet sekojošo.
- TestNG neprasa, lai jums būtu galvenā () metode.
- Metodēm nav jābūt statiskām.
- Mēs izmantojām @Tot anotāciju. @Test tiek izmantots, lai pateiktu, ka tā metode ir testa gadījums . Šajā gadījumā mēs esam iestatījuši metodi VerifyHomepageTitle () par mūsu testa gadījumu, tāpēc virs tās ievietojām anotāciju “@Test”.
- Tā kā TestNG mēs izmantojam anotācijas, mums bija jāimportē pakete org.testng.annotations. *.
- Mēs izmantojām Assert klasi. Assert klase tiek izmantota verifikācijas darbību veikšanai TestNG . Lai to izmantotu, mums jāimportē pakotne org.testng.Assert.
Jums var būt vairāki testa gadījumi (tādēļ vairākas @Test anotācijas) vienā TestNG failā. Tas tiks sīkāk aplūkots vēlāk sadaļā "TestNG izmantotās anotācijas".
Pārbaudes veikšana
Lai palaistu testu, vienkārši palaidiet programmu Eclipse, kā parasti. Eclipse nodrošinās divas izejas - vienu konsoles logā un otru logā TestNG rezultāti.
Pārbauda TestNG izveidotos pārskatus
Programmas Eclipse konsoles logs sniedz teksta ziņojumu par mūsu testa gadījumu rezultātiem, savukārt logs TestNG rezultāti - grafisko.
HTML pārskatu ģenerēšana
TestNG spēj ģenerēt atskaites HTML formātā.
1. solis: Pēc mūsu FirstTestNGFile palaišanas, kuru izveidojām iepriekšējā sadaļā, ar peles labo pogu noklikšķiniet uz projekta nosaukuma (FirstTestNGProject) Project Explorer logā, pēc tam noklikšķiniet uz opcijas "Atsvaidzināt"
2. darbība. Ievērojiet, ka tika izveidota mape "test-output". Izvērsiet to un meklējiet failu index.html. Šis HTML fails ir ziņojums par pēdējās testa darbības rezultātiem.
3. solis: Veiciet dubultklikšķi uz šī index.html faila, lai to atvērtu Eclipse iebūvētajā tīmekļa pārlūkprogrammā. Jūs varat atsvaidzināt šo lapu jebkurā laikā pēc testa atkārtotas izpildīšanas, vienkārši nospiežot F5 tāpat kā parastajās tīmekļa pārlūkprogrammās.
TestNG izmantotās anotācijas
Iepriekšējā sadaļā jūs esat iepazinies ar @Tot anotāciju. Tagad mēs pētīsim uzlabotas anotācijas un to lietojumu.
Vairāki testa gadījumi
Mēs varam izmantot vairākas @Test anotācijas vienā TestNG failā. Pēc noklusējuma @Test anotētās metodes tiek izpildītas alfabētiskā secībā. Skatiet kodu zemāk. Lai gan metodes c_test, a_test un b_test kodā nav sakārtotas alfabētiskā secībā, tās tiks izpildītas kā tādas.
Palaidiet šo kodu un ģenerētajā index.html lapā noklikšķiniet uz "Hronoloģiskais skats".
Parametri
Ja vēlaties, lai metodes tiktu izpildītas citā secībā, izmantojiet parametru "prioritāte". Parametri ir atslēgvārdi, kas maina anotācijas funkciju .
- Pēc parametriem jums jāpiešķir vērtība. Jūs to darāt.tādi, blakus viņiem ievietojot , un pēc tam seko vērtība.
- Parametri ir iekļauti iekavu pārī, kas tiek ievietoti tieši aiz anotācijas, piemēram, zemāk redzamais koda fragments.
TestNG izpildīs @Tot anotāciju ar zemāko prioritātes vērtību līdz lielākajai. Jūsu prioritārajām vērtībām nav jābūt secīgām.
TestNG HTML pārskats apstiprinās, ka metodes tika izpildītas, pamatojoties uz prioritātes augšupejošo vērtību.
Vairāki parametri
Papildus prioritātei @Test ir vēl viens parametrs ar nosaukumu "alwaysRun", kuru var iestatīt tikai uz "true" vai "false". Lai vienā anotācijā izmantotu divus vai vairākus parametrus, atdaliet tos ar komatu, piemēram, zemāk redzamo.
@Test (prioritāte = 0, alwaysRun = true)
@BeforeTest un @AfterTest
@BeforeTest |
metodes šajā anotācijā tiks izpildītas pirms pirmā testa gadījuma TestNG failā . |
@AfterTest |
metodes šajā anotācijā tiks izpildītas pēc tam, kad būs izpildīti visi testa gadījumi failā TestNG . |
Apsveriet zemāk redzamo kodu.
pakete firsttestngpackage;importa org.openqa.selenium. *;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.Assert;importēt org.testng.notot. *;public class firsttestngfile {publiskā virkņu bāzeUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";publiskais WebDriver draiveris;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefox pārlūka palaišana");System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);}@Pārbaudepublic void verifyHomepageTitle () {String várhatóTitle = "Laipni lūdzam: Mercury Tours";String actualTitle = draiveris.getTitle ();Assert.assertEquals (faktiskais nosaukums, paredzamais nosaukums);}@AfterTestpublic void terminateBrowser () {vadītājs.slēgt ();}}
Pielietojot tabulas sniegto loģiku un iepriekš minēto kodu, mēs varam paredzēt, ka secība, pēc kuras tiks izpildītas metodes, ir:
- 1 st - launchBrowser ()
- 2 nd - verifyHomepageTitle ()
- 3 rd - terminateBrowser ()
Anotācijas bloku izvietojumu var apmainīt, neietekmējot to izpildes hronoloģisko secību . Sapratīsim to ar TestNG piemēru un mēģināsim pārkārtot anotāciju blokus tā, lai kods izskatās līdzīgs zemāk redzamajam.
pakete firsttestngpackage;importa org.openqa.selenium. *;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.Assert;importēt org.testng.notot. *;public class firsttestngfile {publiskā virkņu bāzeUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";publiskais WebDriver draiveris;@AfterTest // Jumbledpublic void terminateBrowser () {vadītājs.slēgt ();}@BeforeTest // Jumbledpublic void launchBrowser () {System.out.println ("Firefox pārlūka palaišana");System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);}@Test // Jumbledpublic void verifyHomepageTitle () {String várhatóTitle = "Laipni lūdzam: Mercury Tours";String actualTitle = draiveris.getTitle ();Assert.assertEquals (faktiskais nosaukums, paredzamais nosaukums);}}
Palaidiet iepriekš minēto kodu un pamaniet to
@BeforeMethod un @AfterMethod
@BeforeMethod |
metodes šajā anotācijā tiks izpildītas pirms katras metodes katrā testa gadījumā . |
@PēcMetode |
metodes šajā anotācijā tiks izpildītas pēc katras metodes katrā testa gadījumā. |
Pieņemsim, ka vietnē Mercury Tours mums patīk pārbaudīt divu zemāk esošo saišu mērķa lapu nosaukumus.
Mūsu testa plūsma būtu:
- Dodieties uz sākumlapu un pārbaudiet tās nosaukumu.
- Noklikšķiniet uz REGISTRĒT un pārbaudiet tās mērķa lapas virsrakstu.
- Atgriezieties sākumlapā un pārbaudiet, vai tai joprojām ir pareizs nosaukums.
- Noklikšķiniet uz ATBALSTS un pārbaudiet tās mērķa lapas virsrakstu.
- Atgriezieties sākumlapā un pārbaudiet, vai tai joprojām ir pareizs nosaukums.
Zemāk redzamais kods parāda, kā @BeforeMethod un @AfterMethod tiek izmantoti, lai efektīvi izpildītu iepriekš minēto scenāriju.
pakete firsttestngpackage;importa org.openqa.selenium. *;importēt org.openqa.selenium.firefox.FirefoxDriver;importēt org.testng.Assert;importēt org.testng.notot. *;@Pārbaudepublic class firsttestngfile {publiskā virkņu bāzeUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";publiskais WebDriver draiveris;gaidāma publiskā virkne = nulle;publiskā virkne faktiskā = nulle;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefox pārlūka palaišana");System.setProperty ("webdriver.gecko.driver", driverPath);draiveris = jauns FirefoxDriver ();draiveris.get (baseUrl);}@BeforeMethodpublic void verifyHomepageTitle () {String várhatóTitle = "Laipni lūdzam: Mercury Tours";String actualTitle = draiveris.getTitle ();Assert.assertEquals (faktiskais nosaukums, paredzamais nosaukums);}@Test (prioritāte = 0)public void register () {driver.findElement (By.linkText ("REĢISTRĒT")). noklikšķiniet ();paredzams = "Reģistrēties: Mercury Tours";faktiskais = draiveris.getTitle ();Assert.assertEquals (faktiskais, sagaidāmais);}@Test (prioritāte = 1)publisks tukšs atbalsts () {driver.findElement (By.linkText ("ATBALSTS")). noklikšķiniet ();paredzams = "Notiek būvniecība: Mercury Tours";faktiskais = draiveris.getTitle ();Assert.assertEquals (faktiskais, sagaidāmais);}@PēcMetodepublic void goBackToHomepage () {driver.findElement (By.linkText ("Sākums")). noklikšķiniet ();}@AfterTestpublic void terminateBrowser () {vadītājs.slēgt ();}}
Pēc šī testa veikšanas TestNG būtu jāziņo par šo secību.
Vienkārši sakot, @BeforeMethod jāietver metodes, kas jums jāpalaiž pirms katra testa gadījuma, savukārt @AfterMethod - metodēm, kas jums jāpalaiž pēc katra testa gadījuma.
TestNG anotāciju kopsavilkums
@BeforeSuite : Anotētā metode tiks palaista, pirms būs izpildīti visi testi šajā komplektā.
@AfterSuite : Anotētā metode tiks palaista pēc visu šajā komplektā veikto testu veikšanas.
@BeforeTest : Anotētā metode tiks palaista, pirms tiek palaista jebkura testa metode, kas pieder tagā esošajām klasēm.
@AfterTest : Anotētā metode tiks palaista pēc tam, kad būs izpildītas visas testa metodes, kas pieder tagā esošajām klasēm.
@BeforeGroups : To grupu saraksts, kurās šī konfigurācijas metode darbosies iepriekš. Tiek garantēts, ka šī metode darbosies īsi pirms tiek izmantota pirmā testa metode, kas pieder kādai no šīm grupām.
@AfterGroups : To grupu saraksts, pēc kurām šī konfigurācijas metode darbosies. Tiek garantēts, ka šī metode darbosies neilgi pēc pēdējās testa metodes, kas pieder kādai no šīm grupām, izsaukšanas.
@BeforeClass : Anotētā metode tiks palaista, pirms tiek izsaukta pirmā testa metode pašreizējā klasē.
@AfterClass : Anotētā metode tiks palaista pēc visu pašreizējās klases testa metožu izpildes.
@BeforeMethod : Anotētā metode tiks palaista pirms katras testa metodes.
@AfterMethod : Anotētā metode tiks palaista pēc katras testa metodes.
@Test : Anotētā metode ir testa gadījuma sastāvdaļa
Secinājums
- TestNG ir testēšanas sistēma, kas spēj padarīt Selēna testus vieglāk saprotamus un viegli saprotamus pārskatus.
- Galvenās TestNG priekšrocības salīdzinājumā ar JUnit ir šādas.
- Anotācijas ir vieglāk izmantot un saprast.
- Testa gadījumus var vieglāk sagrupēt.
- TestNG ļauj mums izveidot paralēlus testus.
- Programmas Eclipse konsoles logs ģenerē uz tekstu balstītu rezultātu, savukārt logs TestNG ir noderīgāks, jo tas dod mums testa rezultātu grafisku izvadi, kā arī citas nozīmīgas detaļas, piemēram:
- Katras metodes darbības laiks.
- Metožu izpildes hronoloģiskā secība
- TestNG spēj ģenerēt HTML balstītas atskaites.
- Anotācijās var izmantot parametrus tāpat kā parastās Java TestNG metodes.
- TestNG Dataprovider ir veids, kā ievadīt parametrus testa funkcijā, kas vienā izpildē testu gadījumos nodod dažādas vērtības.