Tutorial TestNG: Ce este, Adnotări & Cadrul în seleniu

Cuprins:

Anonim

Ce este TestNG?

TestNG este un cadru de testare a automatizării în care NG înseamnă „Next Generation”. TestNG este inspirat din JUnit care folosește adnotările (@). TestNG depășește dezavantajele JUnit și este conceput pentru a facilita testarea end-to-end.

Folosind TestNG, puteți genera un raport adecvat și puteți afla cu ușurință câte cazuri de testare sunt trecute, eșuate și omise. Puteți executa cazurile de test nereușite separat.

De exemplu:

  • Să presupunem că aveți cinci cazuri de testare, o metodă este scrisă pentru fiecare caz de testare (Să presupunem că programul este scris folosind metoda principală fără a utiliza testNG). Când rulați primul acest program, trei metode sunt executate cu succes, iar a patra metodă eșuează. Apoi corectați erorile prezente în a patra metodă, acum doriți să rulați doar a patra metodă, deoarece primele trei metode sunt oricum executate cu succes. Acest lucru nu este posibil fără utilizarea TestNG.
  • TestNG în Selenium oferă o opțiune, adică, fișierul testng-failed.xml în dosarul de ieșire test. Dacă doriți să rulați numai cazuri de test nereușite înseamnă că rulați acest fișier XML. Se vor executa numai cazuri de test nereușite.

Pe lângă conceptul de mai sus, veți afla mai multe despre TestNG, cum ar fi care sunt avantajele TestNG, cum să creați metode de testare folosind adnotări @test, cum să convertiți aceste clase în fișierul suitei de testare și să le executați prin eclipsă, precum și din linia de comandă .

În acest tutorial TestNG, veți învăța

  • De ce să folosiți TestNG cu seleniu?
  • Avantajele TestNG față de JUnit
  • Creați un caz de test utilizând adnotările TestNG
  • Cum se creează un fișier de testare nou TestNG
    • Codificarea primului nostru exemplu de testare NG Exemplu de caz
    • Rularea testului
  • Verificarea rapoartelor create de TestNG
  • Adnotări utilizate în TestNG
  • Mai multe cazuri de testare
  • Parametrii
    • Parametri multipli
    • Rezumatul adnotărilor TestNG

De ce să folosiți TestNG cu seleniu?

Testele implicite de seleniu nu generează un format adecvat pentru rezultatele testului. Folosind TestNG în seleniu, putem genera rezultate ale testului.

Majoritatea utilizatorilor de Selenium folosesc acest lucru mai mult decât Junit datorită avantajelor sale. Există atât de multe caracteristici ale TestNG, dar ne vom concentra doar pe cele mai importante pe care le putem folosi în Seleniu. Următoarele sunt caracteristicile cheie ale Selenium TestNG:

  • Generați raportul într-un format adecvat, incluzând un număr de cazuri de testare, numărul de cazuri de testare trecute, numărul de cazuri de testare eșuate și numărul de cazuri de test omise.
  • Mai multe cazuri de testare pot fi grupate mai ușor convertindu-le în fișier testng.xml. În care puteți stabili priorități, care caz de testare trebuie executat mai întâi.
  • Același caz de testare poate fi executat de mai multe ori fără bucle doar utilizând cuvântul cheie numit „număr de invocații”.
  • Folosind testng, puteți executa mai multe cazuri de testare pe mai multe browsere, adică testarea pe mai multe browsere.
  • Cadrul TestNG poate fi ușor integrat cu instrumente precum TestNG Maven, Jenkins etc.
  • Adnotările utilizate în testare sunt foarte ușor de înțeles ex: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver nu are niciun mecanism nativ pentru generarea rapoartelor. TestNG poate genera raportul într-un format lizibil, precum cel prezentat mai jos.
  • TestNG simplifică modul de codare a testelor. Nu mai este nevoie de o metodă statică principală în testele noastre. Secvența acțiunilor este reglementată de adnotări ușor de înțeles care nu necesită metode pentru a fi statice.
  • Excepțiile neprinse sunt gestionate automat de TestNG fără a termina testul prematur. Aceste excepții sunt raportate ca pași eșuați în raport.

Avantajele TestNG față de JUnit

Există trei avantaje majore ale TestNG față de JUnit:

  • Adnotările sunt mai ușor de înțeles
  • Testele pot fi grupate mai ușor
  • Este posibilă testarea în paralel

Adnotările din TestNG sunt linii de cod care pot controla modul în care metoda de sub ele va fi executată . Ele sunt întotdeauna precedate de simbolul @. Un exemplu TestNG foarte timpuriu și rapid este cel prezentat mai jos.

Adnotările vor fi discutate mai târziu în secțiunea denumită „Adnotări utilizate în TestNG”, deci este perfect ok dacă nu înțelegeți încă exemplul TestNG de mai sus. Este important să rețineți că adnotările din TestNG sunt mai ușor de codat și de înțeles decât în ​​JUnit.

Capacitatea de a rula teste în paralel este disponibilă în TestNG, dar nu și în JUnit, deci cadrul TestNG este mai preferat decât testerii care folosesc Selenium Grid.

Creați un caz de test utilizând adnotările TestNG

Acum, vom învăța cum să creăm primul nostru caz de testare folosind adnotările TestNG în seleniu:

Înainte de a crea un caz de testare, ar trebui mai întâi să configurăm un nou proiect TestNG în Eclipse și să-l numim „FirstTestNGProject”.

Configurarea unui nou proiect TestNG

Pasul 1: Faceți clic pe Fișier> Nou> Proiect Java

Pasul 2: Tastați „FirstTestNGProject” ca nume de proiect, apoi faceți clic pe Următorul.

Pasul 3: Vom începe acum să importăm bibliotecile TestNG în proiectul nostru. Faceți clic pe fila „Biblioteci”, apoi pe „Adăugați bibliotecă”

... "

Pasul 4: În dialogul Adăugare bibliotecă, alegeți „TestNG” și faceți clic pe Următorul.

Pasul 5: Faceți clic pe Finalizare.

Trebuie să observați că TestNG este inclus pe lista Bibliotecilor.

Pasul 6: Vom adăuga acum fișierele JAR care conțin API Selenium. Aceste fișiere se găsesc în driverul client Java pe care l-am descărcat de pe http://docs.seleniumhq.org/download/ când instalam Selenium și Eclipse în capitolele anterioare.

Apoi, navigați la locul în care ați plasat fișierele JAR Selenium.

După adăugarea JAR-urilor externe, ecranul dvs. ar trebui să arate astfel.

Pasul 7: Faceți clic pe Finalizare și verificați dacă FirstTestNGProject este vizibil în fereastra Eclipse Package Explorer.

Cum se creează un fișier de testare nou TestNG

Acum, după ce am terminat de configurat proiectul nostru în acest tutorial TestNG, permiteți-ne să creăm un nou fișier TestNG.

Pasul 1: Faceți clic dreapta pe folderul de pachete „src”, apoi alegeți Nou> Altele

...

Pasul 2: Faceți clic pe folderul TestNG și selectați opțiunea „Clasa TestNG”. Faceți clic pe Următorul.

Pasul 3: Tastați valorile indicate mai jos pe casetele de intrare corespunzătoare și faceți clic pe Finalizare. Observați că am denumit fișierul nostru Java ca „FirstTestNGFile”.

Eclipse ar trebui să creeze automat șablonul pentru fișierul nostru TestNG prezentat mai jos.

Codificarea primului nostru exemplu de testare NG Exemplu de caz

Să creăm acum primul nostru caz de test care va verifica dacă pagina de pornire a Mercury Tours este corectă. Tastați codul așa cum se arată în exemplul de mai jos TestNG:

pachet firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";driver public WebDriver;@Testpublic void verifyHomepageTitle () {System.out.println ("lansarea browserului Firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = nou FirefoxDriver ();driver.get (baseUrl);String expectedTitle = "Bun venit: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (Titlu actual, Titlu așteptat);driver.close ();}}

Observați următoarele.

  • TestNG nu necesită să aveți o metodă main ().
  • Metodele nu trebuie să fie statice.
  • Am folosit adnotarea @Test. @Test este folosit pentru a spune că metoda de sub acesta este un caz de testare . În acest caz, am setat metoda verifyHomepageTitle () ca fiind testul nostru, așa că am plasat o adnotare „@Test” deasupra acesteia.
  • Deoarece folosim adnotări în TestNG, a trebuit să importăm pachetul org.testng.annotations. *.
  • Am folosit clasa Assert. Clasa Assert este utilizată pentru a efectua operațiuni de verificare în TestNG . Pentru a-l utiliza, trebuie să importăm pachetul org.testng.Assert.

Este posibil să aveți mai multe cazuri de testare (deci, mai multe adnotări @Test) într-un singur fișier TestNG. Acest lucru va fi abordat mai detaliat mai târziu în secțiunea „Adnotări utilizate în TestNG”.

Rularea testului

Pentru a rula testul, pur și simplu rulați fișierul în Eclipse așa cum faceți în mod normal. Eclipse va furniza două ieșiri - una în fereastra Consolei și cealaltă în fereastra Rezultate TestNG.

Verificarea rapoartelor create de TestNG

Fereastra Console din Eclipse oferă un raport bazat pe text al rezultatelor cazului nostru de test, în timp ce fereastra Rezultate TestNG ne oferă unul grafic.

Generarea de rapoarte HTML

TestNG are capacitatea de a genera rapoarte în format HTML.

Pasul 1: După ce rulați FirstTestNGFile pe care l-am creat în secțiunea anterioară, faceți clic dreapta pe numele proiectului (FirstTestNGProject) în fereastra Project Explorer, apoi faceți clic pe opțiunea „Reîmprospătare”.

Pasul 2: observați că a fost creat un folder „test-output”. Extindeți-l și căutați un fișier index.html. Acest fișier HTML este un raport al rezultatelor celei mai recente teste.

Pasul 3: Faceți dublu clic pe fișierul index.html pentru al deschide în browserul web încorporat al Eclipse. Puteți reîmprospăta această pagină oricând după reluarea testului, pur și simplu apăsând F5 la fel ca în browserele web obișnuite.

Adnotări utilizate în TestNG

În secțiunea anterioară, ați fost introdus în adnotarea @Test. Acum, vom studia adnotări mai avansate și utilizările lor.

Mai multe cazuri de testare

Putem folosi mai multe adnotări @Test într-un singur fișier TestNG. În mod implicit, metodele adnotate de @Test sunt executate alfabetic. Vezi codul de mai jos. Deși metodele c_test, a_test și b_test nu sunt aranjate alfabetic în cod, ele vor fi executate ca atare.

Rulați acest cod și, pe pagina index.html generată, faceți clic pe „Vizualizare cronologică”.

Parametrii

Dacă doriți ca metodele să fie executate într-o ordine diferită, utilizați parametrul „prioritate”. Parametrii sunt cuvinte cheie care modifică funcția adnotării .

  • Parametrii necesită să le atribuiți o valoare. Faceți acest lucru plasând un „=” lângă ele, apoi urmat de valoare.
  • Parametrii sunt cuprinși într-o pereche de paranteze care sunt plasate imediat după adnotare, precum fragmentul de cod prezentat mai jos.

TestNG va executa adnotarea @Test cu cea mai mică valoare de prioritate până la cea mai mare. Nu este nevoie ca valorile dvs. prioritare să fie consecutive.

Raportul TestNG HTML va confirma că metodele au fost executate pe baza valorii crescătoare a priorității.

Parametri multipli

În afară de „prioritate”, @Test are un alt parametru numit „alwaysRun”, care poate fi setat doar la „true” sau „false”. Pentru a utiliza doi sau mai mulți parametri într-o singură adnotare, separați-i cu o virgulă precum cea prezentată mai jos.

@Test (prioritate = 0, alwaysRun = true)

@BeforeTest și @AfterTest

@BeforeTest

metodele din această adnotare vor fi executate înainte de primul caz de testare din fișierul TestNG .

@AfterTest

metodele din această adnotare vor fi executate după ce toate cazurile de testare din fișierul TestNG sunt executate .

Luați în considerare codul de mai jos.

pachet firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";driver public WebDriver;@BeforeTestpublic void launchBrowser () {System.out.println ("lansarea browserului Firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = nou FirefoxDriver ();driver.get (baseUrl);}@Testpublic void verifyHomepageTitle () {String expectedTitle = "Bun venit: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (Titlu actual, Titlu așteptat);}@AfterTestpublic void terminateBrowser () {driver.close ();}}

Aplicând logica prezentată de tabel și codul de mai sus, putem prezice că secvența prin care vor fi executate metodele este:

  • 1 st - launchBrowser ()
  • Al 2 - lea - VerificațiHomepageTitle ()
  • 3 rd - terminateBrowser ()

Amplasarea blocurilor de adnotări poate fi schimbată fără a afecta ordinea cronologică prin care vor fi executate . Să înțelegem cu un exemplu TestNG și să încercăm să rearanjăm blocurile de adnotări astfel încât codul dvs. să arate similar cu cel de mai jos.

pachet firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;public class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";driver public WebDriver;@AfterTest // Jumbledpublic void terminateBrowser () {driver.close ();}@BeforeTest // Îmbrăcatpublic void launchBrowser () {System.out.println ("lansarea browserului Firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = nou FirefoxDriver ();driver.get (baseUrl);}@Test // Îmbrăcatpublic void verifyHomepageTitle () {String expectedTitle = "Bun venit: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (Titlu actual, Titlu așteptat);}}

Rulați codul de mai sus și observați că

@BeforeMethod și @AfterMethod

@BeforeMethod

metodele din această adnotare vor fi executate înainte de fiecare metodă în fiecare caz de testare .

@AfterMethod

metodele din această adnotare vor fi executate după fiecare metodă în fiecare caz de testare.

În Mercury Tours, să presupunem că ne place să verificăm titlurile paginilor țintă ale celor două linkuri de mai jos.

Fluxul testului nostru ar fi:

  • Accesați pagina de pornire și verificați titlul acesteia.
  • Faceți clic pe ÎNREGISTRARE și verificați titlul paginii țintă.
  • Reveniți la pagina de pornire și verificați dacă are încă titlul corect.
  • Faceți clic pe SUPORT și verificați titlul paginii țintă.
  • Reveniți la pagina de pornire și verificați dacă are încă titlul corect.

Codul de mai jos ilustrează modul în care @BeforeMethod și @AfterMethod sunt utilizate pentru a executa eficient scenariul menționat mai sus.

pachet firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;@Testpublic class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";driver public WebDriver;șir public așteptat = nul;public String actual = nul;@BeforeTestpublic void launchBrowser () {System.out.println ("lansarea browserului Firefox");System.setProperty ("webdriver.gecko.driver", driverPath);driver = nou FirefoxDriver ();driver.get (baseUrl);}@BeforeMethodpublic void verifyHomepageTitle () {String expectedTitle = "Bun venit: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (Titlu actual, Titlu așteptat);}@Test (prioritate = 0)registru public nul () {driver.findElement (By.linkText ("REGISTER")). click ();expected = "Register: Mercury Tours";actual = driver.getTitle ();Assert.assertEquals (real, așteptat);}@Test (prioritate = 1)suport public nul () {driver.findElement (By.linkText ("SUPPORT")). click ();expected = "În construcție: Mercury Tours";actual = driver.getTitle ();Assert.assertEquals (real, așteptat);}@AfterMethodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Acasă")). faceți clic pe ();}@AfterTestpublic void terminateBrowser () {driver.close ();}}

După executarea acestui test, TestNG dvs. ar trebui să raporteze următoarea secvență.

Pur și simplu, @BeforeMethod ar trebui să conțină metode pe care trebuie să le rulați înainte de fiecare caz de test, în timp ce @AfterMethod ar trebui să conțină metode pe care trebuie să le rulați după fiecare caz de testare.

Rezumatul adnotărilor TestNG

@BeforeSuite : Metoda adnotată va fi rulată înainte ca toate testele din această suită să fie executate.

@AfterSuite : Metoda adnotată va fi rulată după ce s-au executat toate testele din această suită.

@BeforeTest : Metoda adnotată va fi rulată înainte de a rula orice metodă de testare aparținând claselor din interiorul etichetei.

@AfterTest : Metoda adnotată va fi rulată după ce s-au executat toate metodele de testare aparținând claselor din interiorul etichetei.

@BeforeGroups : Lista grupurilor pe care această metodă de configurare le va rula înainte. Această metodă este garantată să ruleze cu puțin înainte de a fi invocată prima metodă de testare care aparține oricăruia dintre aceste grupuri.

@AfterGroups : Lista grupurilor după care va rula această metodă de configurare. Această metodă este garantată să ruleze la scurt timp după ce a fost invocată ultima metodă de testare care aparține oricăruia dintre aceste grupuri.

@BeforeClass : Metoda adnotată va fi rulată înainte de a fi invocată prima metodă de testare din clasa curentă.

@AfterClass : Metoda adnotată va fi rulată după ce toate metodele de testare din clasa curentă au fost rulate.

@BeforeMethod : Metoda adnotată va fi rulată înainte de fiecare metodă de testare.

@AfterMethod : Metoda adnotată va fi rulată după fiecare metodă de testare.

@Test : metoda adnotată face parte dintr-un caz de testare

Concluzie

  • TestNG este un cadru de testare care este capabil să facă testele Selenium mai ușor de înțeles și să genereze rapoarte ușor de înțeles.
  • Principalele avantaje ale TestNG față de JUnit sunt următoarele.
    • Adnotările sunt mai ușor de utilizat și de înțeles.
    • Testele pot fi grupate mai ușor.
    • TestNG ne permite să creăm teste paralele.
  • Fereastra Console din Eclipse generează un rezultat bazat pe text, în timp ce fereastra TestNG este mai utilă, deoarece ne oferă o ieșire grafică a rezultatului testului, plus alte detalii semnificative, cum ar fi:
    • Duratele de rulare ale fiecărei metode.
    • Ordinea cronologică prin care au fost executate metodele
  • TestNG este capabil să genereze rapoarte bazate pe HTML.
  • Adnotările pot utiliza parametri la fel ca metodele obișnuite Java TestNG.
  • TestNG Dataprovider este o modalitate de a trece parametrii în funcția de testare, care trece valori diferite în cazurile de testare într-o singură execuție.