TestNG juhendaja
Mis on TestNG?
TestNG on automatiseerimise testimise raamistik, milles NG tรคhistab "jรคrgmist pรตlvkonda". TestNG on inspireeritud JUnit mis kasutab mรคrkusi (@). TestNG รผletab puudused JUnit ja on mรตeldud valmistamiseks otsast lรตpuni testimine lihtne.
Kasutamine TestNG, saate luua korraliku aruande ja saate hรตlpsalt teada, kui palju testjuhtumeid on lรคbitud, ebaรตnnestunud ja vahele jรคetud. Ebaรตnnestunud testjuhtumeid saate lรคbi viia eraldi.
Nรคiteks:
- Oletame, et teil on viis testjuhtumit, iga testjuhtumi jaoks kirjutatakse รผks meetod (Oletame, et programm on kirjutatud pรตhimeetodil ilma testNG-d kasutamata). Selle programmi esmakordsel kรคivitamisel kรคivitatakse kolm meetodit edukalt ja neljas meetod ebaรตnnestub. Seejรคrel parandage neljandas meetodis esinevad vead, nรผรผd soovite kรคivitada ainult neljanda meetodi, kuna esimesed kolm meetodit kรคivitatakse niikuinii edukalt. Ilma kasutamata pole see vรตimalik TestNG.
- . TestNG in Selenium pakub suvandit, st faili testng-failed.xml test-vรคljundkaustas. Kui soovite kรคivitada ainult ebaรตnnestunud testjuhtumeid, siis kรคivitate selle XML-faili. See kรคivitab ainult ebaรตnnestunud testjuhtumid.
Lisaks รผlaltoodud kontseptsioonile saate selle kohta rohkem teada TestNG, nagu millised on eelised TestNG, kuidas luua testmeetodeid @test annotatsioonide abil, kuidas konverteerida need klassid testimiskomplekti failiks ja kรคivitada nii lรคbi eclipse kui ka kรคsurealt.
Miks kasutada TestNG koos Selenium?
vaikimisi Selenium testid ei loo testitulemuste jaoks รตiget vormingut. Kasutades TestNG in Selenium, saame luua testitulemusi.
sild Selenium kasutajad kasutavad seda rohkem kui Junit selle eeliste tรตttu. Sellel on nii palju funktsioone TestNG, kuid keskendume ainult kรตige olulisematele, mida saame kasutada Selenium. Allpool on toodud peamised omadused Selenium TestNG:
- Looge aruanne รตiges vormingus, sealhulgas testjuhtumite arv, lรคbitud testjuhtumite arv, ebaรตnnestunud testjuhtumite arv ja vahele jรคetud testjuhtumite arv.
- Mitut testjuhtumit saab hรตlpsamini rรผhmitada, teisendades need failiks testng.xml. Milles saate mรครคrata prioriteedid, milline testjuhtum tuleks kรตigepealt kรคivitada.
- Sama testjuhtumit saab ilma silmusteta mitu korda kรคivitada, kasutades selleks mรคrksรตna nimega "invocation count".
- Testng-i abil saate kรคivitada mitu testjuhtumit mitmes brauseris, st rist brauseri testimine.
- . TestNG raamistikku saab hรตlpsasti integreerida selliste tรถรถriistadega nagu TestNG Maven, Jenkins jne.
- Testimisel kasutatud mรคrkused on vรคga kergesti mรตistetavad, nรคiteks: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
- WebDriveril pole aruannete loomiseks loomulikku mehhanismi. TestNG saab luua aruande loetavas vormingus, nagu allpool nรคidatud.
- TestNG lihtsustab testide kodeerimist. Meie testides pole enam staatilist pรตhimeetodit vaja. Toimingute jรคrjestust reguleerivad kergesti mรตistetavad annotatsioonid, mis ei nรตua, et meetodid oleksid staatilised.
- Tabamata erandeid kรคsitleb automaatselt TestNG testi enneaegselt katkestamata. Need erandid kajastatakse aruandes ebaรตnnestunud sammudena.
Eelised TestNG รผle JUnit
Sellel on kolm peamist eelist TestNG รผle JUnit:
- Mรคrkusi on lihtsam mรตista
- Testjuhtumeid saab hรตlpsamini rรผhmitada
- Vรตimalik on paralleelne testimine
Milles on annotatsioon TestNG?
Mรคrkused sisse TestNG on koodiread, mis saavad juhtida nende all oleva meetodi kรคivitamist. Nende ees on alati sรผmbol @. Vรคga varajane ja kiire TestNG Nรคide on allpool nรคidatud.
Mรคrkusi kรคsitletakse hiljem jaotises โAnnotatsioonid, mida kasutatakse TestNGโ, seega on tรคiesti okei, kui te รผlaltoodust aru ei saa TestNG Nรคide veel. Praegu on lihtsalt oluline mรคrkida, et mรคrkused on sisse lรผlitatud TestNG on lihtsam kodeerida ja mรตista kui sisse JUnit.
Vรตimalus paralleelselt teste kรคivitada on saadaval TestNG aga mitte sisse JUnit, Nii TestNG raamistik on eelistatavam testijatele, kes kasutavad Selenium Vรตre.
Kuidas kirjutada testjuhtumeid TestNG?
Step 1) Kirjutage oma รคriloogika ja sisestage TestNG mรคrkused teie koodis.
Step 2) Lisage rohkem teavet, nagu klassi nimi, rรผhma nimi, paketi nimi jne
Step 3) Kรคivita TestNG.
Looge testjuhtum kasutades TestNG Annotatsioonid
Nรผรผd รตpime, kuidas luua oma esimene testjuhtum TestNG Mรคrkused sisse Selenium:
Enne testjuhtumi loomist peaksime esmalt seadistama uue TestNG Projekti sisse Eclipse ja nimetage see "EsiteksTestNGProjektโ.
Uue seadistamine TestNG Projekt
Samm 1: Klรตpsake Fail > Uus > Java Projekt
Samm 2: Tippige "KรตigepealtTestNGProjektโ kui projekti nimi, seejรคrel klรตpsake nuppu Edasi.
Samm 3: Nรผรผd hakkame importima TestNG Raamatukogud meie projekti. Klรตpsake vahekaarti "Teekid" ja seejรคrel "Lisa raamatukogu ...".
Samm 4: Dialoogiaknas Teegi lisamine valige "TestNGโJa klรตpsake nuppu Edasi.
Samm 5: Klรตpsake nuppu Lรตpeta.
Peaksite seda mรคrkama TestNG on kantud raamatukogude loendisse.
Samm 6: Lisame nรผรผd JAR-failid, mis sisaldavad Selenium API. Need failid leiate Java kliendidraiver, millest me alla laadisime https://www.selenium.dev/downloads/ kui me paigaldasime Selenium ja Eclipse eelmistes peatรผkkides.
Seejรคrel navigeerige kohta, kuhu olete asetanud Selenium JAR-failid.
Pรคrast vรคliste JAR-ide lisamist peaks teie ekraan vรคlja nรคgema selline.
Samm 7: Klรตpsake nuppu Lรตpeta ja veenduge, et meie esimeneTestNGProjekt on nรคhtav EclipsePackage Exploreri aken.
Kuidas luua uut TestNG Testfail
Nรผรผd, kui oleme oma projekti seadistamise lรตpetanud TestNG รตpetus, loome uue TestNG faili.
Samm 1: Klรตpsake 'src' ja valige muu.
Paremklรตpsake paketi kaustal "src", seejรคrel valige Uus> Muu ...
Samm 2: valima TestNG klass.
Klรตpsake TestNG kaust ja valige "TestNG klassโ valik. Klรตpsake nuppu Edasi.
Samm 3: Sisestage vรครคrtused.
Tippige allpool nรคidatud vรครคrtused vastavatesse sisestuskastidesse ja klรตpsake nuppu Lรตpeta. Pange tรคhele, et oleme oma nime andnud Java faili nimega โFirstTestNGFailโ.
Samm 4: Mall loodud.
Eclipse peaks meie jaoks malli automaatselt looma TestNG allpool nรคidatud fail.
Meie esimese kodeerimine TestNG Testjuhtumi nรคide
Loome nรผรผd oma esimese Testjuhtum see kontrollib, kas Mercury Toursi koduleht on รตige. Sisestage oma kood, nagu allpool nรคidatud TestNG Nรคide:
package 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 = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver ;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.close();
}
}
Pange tรคhele jรคrgmist.
- TestNG ei nรตua, et teil oleks main() meetod.
- Meetodid ei pea olema staatilised.
- Kasutasime @Test annotatsiooni. @Test kasutatakse selleks, et รถelda, et selle all olev meetod on testjuhtum. Sel juhul oleme oma testjuhtumiks seadnud meetodi verifyHomepageTitle(), seega paigutasime selle kohale mรคrkuse โ@Testโ.
- Kuna me kasutame annotatsioone TestNG, pidime importima paketi org.testng.annotations.*.
- Kasutasime Assert klassi. Assert klassi kasutatakse kontrollitoimingute lรคbiviimiseks TestNG. Selle kasutamiseks peame importima paketi org.testng.Assert.
Teil vรตib รผhes รผhes olla mitu testjuhtumit (seetรตttu mitu @Test annotatsiooni). TestNG faili. Seda kรคsitletakse รผksikasjalikumalt hiljem jaotises โAnnotatsioonid, mida kasutatakse TestNG. "
Testi kรคivitamine
Testi kรคivitamiseks kรคivitage fail lihtsalt Eclipse nagu tavaliselt. Eclipse pakub kaks vรคljundit โ รผks konsooliaknas ja teine โโkonsooliaknas TestNG Tulemuste aken.
Kasutaja loodud aruannete kontrollimine TestNG
Konsooli aken sisse Eclipse annab tekstipรตhise aruande meie testjuhtumi tulemuste kohta, samal ajal kui TestNG Tulemuste aken annab meile graafilise pildi.
HTML-aruannete genereerimine
TestNG on vรตimeline genereerima aruandeid HTML-vormingus.
Samm 1: Pรคrast meie Esimese jooksmistTestNGEelmises jaotises loodud failil paremklรตpsake projekti nimel (EsiteksTestNGProject) aknas Project Explorer, seejรคrel klรตpsake suvandit "Vรคrskenda".
Samm 2: Pange tรคhele, et loodi kaust "test-vรคljund". Laiendage seda ja otsige รผles fail index.html. See HTML-fail on viimase katsetamise tulemuste aruanne.
Samm 3: Double-klรตpsake failil index.html selle avamiseks Eclipsesisseehitatud veebibrauser. Saate seda lehte igal ajal pรคrast testi uuesti kรคivitamist vรคrskendada, vajutades lihtsalt klahvi F5 nagu tavalistes veebibrauserites.
Aastal kasutatud mรคrkused TestNG
Eelmises jaotises tutvustati teile @Test annotatsiooni. Nรผรผd uurime tรคpsemaid mรคrkusi ja nende kasutusvรตimalusi.
Mitu katsejuhtumit
รhes saab kasutada mitut @Test annotatsiooni TestNG faili. Vaikimisi kรคivitatakse @Test annoteeritud meetodid tรคhestikulises jรคrjekorras. Vaadake allolevat koodi. Kuigi meetodid c_test, a_test ja b_test ei ole koodis tรคhestikulises jรคrjekorras, kรคivitatakse need sellisena.
Kรคivitage see kood ja klรตpsake loodud index.html lehel "Kronoloogiline vaade".
parameetrid
Kui soovite, et meetodeid tรคidetaks teises jรคrjekorras, kasutage parameetrit "priority". Parameetrid on mรคrksรตnad, mis muudavad mรคrkuse funktsiooni.
- Parameetrid nรตuavad neile vรครคrtuse mรครคramist. Selleks lisate nende kรตrvale mรคrgi โ=โ ja seejรคrel vรครคrtuse.
- Parameetrid on suletud sulgudesse, mis asetatakse kohe annotatsiooni jรคrele, nagu allpool nรคidatud koodilรตik.
TestNG kรคivitab @Test annotatsiooni madalaima prioriteediga kuni suurima vรครคrtusega. Teie prioriteetsed vรครคrtused ei pea olema jรคrjestikused.
. TestNG HTML-aruanne kinnitab, et meetodid kรคivitati prioriteedi kasvava vรครคrtuse alusel.
Mitu parameetrit
Lisaks prioriteedile on @Testil veel รผks parameeter nimega "alwaysRun", mille saab mรครคrata ainult vรครคrtusele "true" vรตi "false". Kahe vรตi enama parameetri kasutamiseks รผhes annotatsioonis eraldage need komaga nagu allpool nรคidatud.
@Test(priority = 0, alwaysRun = true)
@BeforeTest ja @AfterTest
| @BeforeTest | selle annotatsiooni all olevad meetodid kรคivitatakse enne esimest katsejuhtumit aastal TestNG fail. |
| @AfterTest | selle annotatsiooni all olevad meetodid kรคivitatakse pรคrast kรตiki testjuhtumeid TestNG failid kรคivitatakse. |
Mรตelge allolevale koodile.
package 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 = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver ;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@AfterTest
public void terminateBrowser(){
driver.close();
}
}
Rakendades tabelis esitatud loogikat ja รผlaltoodud koodi, vรตime ennustada, et meetodite kรคivitamise jada on jรคrgmine:
- 1st - kรคivitada brauser ()
- 2nd โ verifyHomepageTitle()
- 3rd - terminateBrowser ()
Annotatsiooniplokkide paigutust saab vahetada, ilma et see mรตjutaks nende tรคitmise kronoloogilist jรคrjekorda. Mรตistame a-ga TestNG Nรคide ja proovige annotatsiooniplokke รผmber korraldada nii, et teie kood nรคeks vรคlja sarnane allolevaga.
package 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 = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver ;
@AfterTest //Jumbled
public void terminateBrowser(){
driver.close();
}
@BeforeTest //Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver = new FirefoxDriver();
driver.get(baseUrl);
}
@Test //Jumbled
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
}
Kรคivitage รผlaltoodud kood ja pange tรคhele
@BeforeMethod ja @AfterMethod
| @BeforeMethod | selle annotatsiooni all olevad meetodid kรคivitatakse enne iga meetodit igal katsejuhul. |
| @AfterMethod | selle annotatsiooni all olevad meetodid kรคivitatakse pรคrast iga meetodit igal katsejuhul. |
In Mercury Tours, oletame, et meile meeldib kontrollida kahe alloleva lingi sihtlehtede pealkirju.
Meie testi kรคik oleks jรคrgmine:
- Minge avalehele ja kinnitage selle pealkiri.
- Klรตpsake REGISTER ja kinnitage selle sihtlehe pealkiri.
- Minge tagasi avalehele ja kontrollige, kas sellel on ikka รตige pealkiri.
- Klรตpsake nuppu TUGI ja kinnitage selle sihtlehe pealkiri.
- Minge tagasi avalehele ja kontrollige, kas sellel on ikka รตige pealkiri.
Allolev kood illustreerib, kuidas @BeforeMethod ja @AfterMethod kasutatakse รผlalmainitud stsenaariumi tรตhusaks tรคitmiseks.
package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
String driverPath = "C:\\geckodriver.exe";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
System.setProperty("webdriver.gecko.driver", driverPath);
driver= new FirefoxDriver();
driver.get(baseUrl);
}
@BeforeMethod
public void verifyHomepageTitle() {
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
}
@Test(priority = 0)
public void register(){
driver.findElement(By.linkText("REGISTER")).click() ;
expected = "Register: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@Test(priority = 1)
public void support() {
driver.findElement(By.linkText("SUPPORT")).click() ;
expected = "Under Construction: Mercury Tours";
actual = driver.getTitle();
Assert.assertEquals(actual, expected);
}
@AfterMethod
public void goBackToHomepage ( ) {
driver.findElement(By.linkText("Home")).click() ;
}
@AfterTest
public void terminateBrowser(){
driver.close();
}
}
Pรคrast selle testi sooritamist on teie TestNG peaks teatama jรคrgmisest jรคrjestusest.
Lihtsamalt รถeldes peaks @BeforeMethod sisaldama meetodeid, mida peate kรคivitama enne iga testjuhtum, samas kui @AfterMethod peaks sisaldama meetodeid, mida peate kรคivitama pรคrast iga katsejuhtum.
Kokkuvรตte TestNG Annotatsioonid
@BeforeSuite: Annoteeritud meetod kรคivitatakse enne, kui kรตik selle komplekti testid on kรคivitunud.
@AfterSuite: mรคrkustega meetod kรคivitatakse pรคrast seda, kui kรตik selle komplekti testid on kรคivitunud.
@BeforeTest: mรคrkustega meetod kรคivitatakse enne mรคrgendi sees olevatesse klassidesse kuuluva testmeetodi kรคivitamist.
@AfterTest: mรคrkustega meetod kรคivitatakse pรคrast seda, kui kรตik mรคrgendis olevatesse klassidesse kuuluvad testimeetodid on kรคivitunud.
@BeforeGroups: rรผhmade loend, mida see konfiguratsioonimeetod varem kรคivitab. Selle meetodi kรคivitamine on garanteeritud vahetult enne esimese katsemeetodi kรคivitamist, mis kuulub mรตnda neist rรผhmadest.
@AfterGroups: rรผhmade loend, mille jรคrel see konfiguratsioonimeetod kรคivitatakse. Selle meetodi kรคivitumine on garanteeritud varsti pรคrast seda, kui on kรคivitatud viimane testimismeetod, mis kuulub mรตnda neist rรผhmadest.
@BeforeClass: Annoteeritud meetod kรคivitatakse enne praeguse klassi esimese testmeetodi kรคivitamist.
@AfterClass: Annoteeritud meetod kรคivitatakse pรคrast seda, kui kรตik praeguse klassi testimeetodid on kรคivitunud.
@BeforeMethod: Annoteeritud meetod kรคivitatakse enne iga katsemeetodit.
@AfterMethod: Annoteeritud meetod kรคivitatakse pรคrast iga katsemeetodit.
@Test: Annoteeritud meetod on osa testjuhtumist
Jรคreldus
- TestNG on testimine raamistik, mida on vรตimalik luua Selenium lihtsamini mรตistetavad testid ja hรตlpsasti mรตistetavate aruannete koostamine.
- Peamised eelised TestNG รผle JUnit on jรคrgmised.
- Mรคrkusi on lihtsam kasutada ja arusaadavam.
- Testjuhtumeid saab hรตlpsamini rรผhmitada.
- TestNG vรตimaldab meil luua paralleelkatsed.
- Konsooli aken sisse Eclipse genereerib tekstipรตhise tulemuse, samal ajal kui TestNG aken on kasulikum, kuna see annab meile testitulemuste graafilise vรคljundi ja muid olulisi รผksikasju, nรคiteks:
- Iga meetodi tรถรถajad.
- Meetodite teostamise kronoloogiline jรคrjekord
- TestNG on vรตimeline genereerima HTML-pรตhiseid aruandeid.
- Mรคrkused vรตivad kasutada parameetreid nagu tavaliselt Java TestNG meetodid.
- TestNG Dataprovider on viis parameetrite edastamiseks testfunktsioonile, mis edastab testjuhtumite erinevad vรครคrtused รผhe tรคitmisega.

































