TestNG juhendaja
โก Nutikas kokkuvรตte
TestNG on jรคrgmise pรตlvkonna Java testimisraamistik, mis sobib kokku Selenium struktureeritud automatiseerimise, rikkaliku aruandluse ja paralleelse kรคivitamise jaoks. See รตpetus hรตlmab pรตhilisi mรคrkusi, projekti seadistamist Eclipse, esimese testjuhtumi kirjutamine, HTML-aruanded ja parameetrite kasutamine tรคpsemalt.
Mis on TestNG?
TestNG on automatiseeritud testimise raamistik, kus โNGโ tรคhistab โjรคrgmist pรตlvkondaโ. TestNG on inspireeritud JUnit ja kasutab Java annotatsioonid (@) testi voo juhtimiseks. See รผletab JUnitvarasemad piirangud ja on loodud selleks, et otsast lรตpuni testimine lihtsamaks.
koos TestNG Saate luua korraliku aruande ja kohe nรคha, mitu testi รตnnestus, ebaรตnnestus vรตi vahele jรคeti. Samuti saate uuesti kรคivitada ainult ebaรตnnestunud juhtumeid.
Nรคiteks:
- Oletame, et teil on viis testijuhtumit, igaรผks oma meetodis, kirjutatud ilma TestNGKolmas lรคheb edukalt; neljas ebaรตnnestub. Pรคrast neljanda parandamist tahad uuesti kรคivitada ainult selle, kuna esimesed kolm on juba รตnnestunud. Seda on tavalise main()-meetodi koodiga raske teha.
- TestNG annab
testng-failed.xmlfaililtest-outputkaust. Selle XML-i kรคivitamine kรคivitab uuesti ainult ebaรตnnestunud juhtumid.
Lisaks saate teada selle eelised TestNG, kuidas kirjutada testimismeetodeid @Test annotatsioonidega ja kuidas teisendada oma klassid testikomplektiks, mis tรถรถtab Eclipse vรตi kรคsurealt.
Miks kasutada TestNG koos Selenium?
Vaikimisi Selenium testid ei anna kenasti vormindatud tulemusi. TestNG รhendatud olekus vรคljastab testija struktureeritud aruande, mida saate meeskonnaga jagada.
sild Selenium kasutajad eelistavad TestNG รผle JUnit tรคnu laiemale funktsioonide valikule. Pรตhifunktsioonid Selenium See on:
- Aruanded, mis sisaldavad kรคivitatud, sooritatud, ebaรตnnestunud ja vahele jรคetud testide arvu.
- Lihtne kruusping testjuhtumitest lรคbi a
testng.xmlfail koos tรคitmisprioriteetidega. - Korda testi mitu korda ilma tsรผkliteta, kasutades
invocationCount. - Kรคivita mitu testi mitmes brauseris โ rist-brauseri testimine Tugi.
- Sujuv integratsioon Maveniga, Jenkinsja muud CI-tรถรถriistad.
- Readable mรคrkused โ nรคiteks @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
- Selenium WebDriveril puudub natiivne aruandlus; TestNG tรคidab selle lรผnga puhta HTML-aruandega, nagu allpool nรคidatud.
- TestNG lihtsustab testkoodi. Sa ei vaja enam staatilist peamist meetodit; annotatsioonid otsustavad, mis ja millal kรคivitatakse.
- Tabamata erandeid kรคsitletakse graatsiliselt TestNGNeed registreeritakse ebaรตnnestunud etappidena ilma kogu kรคivitamist lรตpetamata.
Eelised TestNG รผle JUnit
TestNG pakub kolme peamist eelist vรตrreldes JUnit:
- Mรคrkusi on lihtsam mรตista ja kasutada.
- Testijuhtumeid saab vรคiksema vaevaga grupeerida ja tรคhtsuse jรคrjekorda seada.
- Paralleelsete testide kรคivitamist toetatakse kohe pรคrast installimist.
Mis on annotatsioon TestNG?
Mรคrkused sisse TestNG on meetodi kohale paigutatud koodiread, mis kontrollivad selle kรคivitamist. Need algavad alati @-sรผmboliga. Lihtne nรคide on toodud allpool.
Mรคrkusi kรคsitletakse รผksikasjalikumalt jaotises โKasutatud mรคrkusedโ TestNG" hiljem selles รตpetuses, seega on รผlaltoodud nรคide vaid ootuste seadmiseks. TestNG annotatsioone on lihtsam kodeerida ja lugeda kui JUnit ekvivalendid ja need on olulised testide kรคivitamisel Selenium vรตre kus paralleelne teostus on oluline.
Kuidas kirjutada testjuhtumeid TestNG
Kirjutamine a TestNG Testjuhtum koosneb kolmest etapist:
- Kirjutage oma รคriloogika ja asetage see TestNG iga meetodi kohal olevad mรคrkused.
- Lisage metaandmed, nรคiteks klassi nimi, rรผhma nimi ja paketi nimi.
- Kรคivita TestNG klass oma IDE-st vรตi kรคsurealt.
Loo testjuhtum, kasutades TestNG Annotatsioonid
Nรผรผd loome oma esimese testjuhtumi, kasutades TestNG mรคrkused sees SeleniumEnne testi kirjutamist looge uus TestNG projekt sisse Eclipse ja helistage sellele esimeneTestNGProjekt.
Uue seadistamine TestNG Projekt
Step 1) Click Fail > Uus > Java Projekt.
Step 2) sisene esimeneTestNGProjekt projekti nimeks ja klรตpsake jรคrgmine.
Step 3) Importige TestNG teegid. Klรตpsake nuppu Raamatukogud vahelehel ja siis Lisa raamatukoguโฆ.
Step 4) aasta Lisa raamatukogu dialoogiboksis, valige TestNG ja kliki jรคrgmine.
Step 5) Click lรตpp.
TestNG peaks nรผรผd ilmuma teekide loendis.
Step 6) Lisage JAR-failid, mis sisaldavad Selenium API. Need pรคrinevad Java kliendi draiver alla laaditud saidilt selenium.dev/allalaadimised.
Navigeeri kausta, kuhu Selenium JAR-failid salvestatakse.
Pรคrast vรคliste JAR-ide lisamist peaks ekraan vรคlja nรคgema selline.
Step 7) Click lรตpp. Uus esimeneTestNGProjekt ilmub paketihaldurisse.
Kuidas luua uut TestNG Testfail
Kui projekt on valmis, looge uus TestNG faili.
Step 1) Paremklรตpsake seda src kaust ja vali Uus > Muuโฆ.
Step 2) Laienda TestNG kaust, valige TestNG klassja klรตpsake jรคrgmine.
Step 3) Sisestage allpool nรคidatud vรครคrtused ja klรตpsake lรตpp. Java fail on nimetatud esimeneTestNGFail.
Step 4) Eclipse genereerib TestNG allpool nรคidatud malli.
Sinu esimene kodeerimine TestNG Testjuhtum
Loo esimene testjuhtum mis kinnitab pealkirja Mercury Ekskursioonide koduleht.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
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/";
public WebDriver driver;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
// Selenium 4 ships Selenium Manager, so the driver path is no longer required.
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.quit();
}
}
Mida tรคhele panna:
- TestNG ei vaja
main()meetod. - Meetodid ei pea olema staatilised.
- . @Test mรคrkuste mรคrgid
verifyHomepageTitle()katsejuhtumina. - Mรคrkused asuvad siin
org.testng.annotations.*pakendis. - . Vรคide klassist alates
org.testng.Assertdraivide verifitseerimised.
รhes dokumendis vรตib olla mitu @Test annotatsiooni. TestNG faili. Me kรคsitleme seda jaotises โKasutatud mรคrkusedโ TestNG" sektsiooni.
Testi kรคivitamine
Paremklรตpsake failil ja kรคivitage see kaustana TestNG test. Eclipse annab kaks vรคljundit โ tekstitulemuse konsooliaknas ja graafilise tulemuse TestNG Tulemuste aken.
Aruannete kontrollimine koostas TestNG
Konsooliaken pakub tekstipรตhist kokkuvรตtet, samal ajal kui TestNG Tulemuste aken kuvab graafilist vaadet.
HTML-aruannete genereerimine
TestNG saab genereerida ka tรคielikke HTML-aruandeid.
Step 1) Pรคrast jooksmist esimeneTestNGFail, paremklรตpsake projektil ja valige vรคrskendama.
Step 2) A test-vรคljund kaust ilmub. Laiendage seda ja leidke index.html โ viimase kรคivitamise HTML-aruanne.
Step 3) Double-klรตps index.html selle seestpoolt avama Eclipsebrauser. Pรคrast tulevasi kรคivitamisi vajutage vรคrskendamiseks F5.
Kasutatud mรคrkused TestNG
Oled juba nรคinud @Test annotatsiooni. Selle jaotise รผlejรครคnud osa hรตlmab kรตige kasulikumaid edasijรตudnutele mรตeldud annotatsioone.
Mitu katsejuhtumit
รksik TestNG fail vรตib sisaldada mitut @Test annotatsiooni. Vaikimisi tรคidetakse @Test-iga annoteeritud meetodeid tรคhestikulises jรคrjekorras. Allolevas koodis meetodid c_test, a_testja b_test tรคhestikulises jรคrjekorras, olenemata allikate jรคrjekorrast.
Kรคivita kood ja ava index.html. Klรตpsa Kronoloogiline vaade.
parameetrid
Vaikimisi jรคrjestuse tรผhistamiseks kasutage priority parameeter. Parameetrid on mรคrksรตnad, mis muudavad annotatsiooni kรคitumist.
- Mรครคrake vรครคrtus koos
=. - Murra parameetrid sulgudes, mis asetatakse vahetult pรคrast mรคrkust, nagu allpool nรคidatud.
TestNG Kรคivitab @Test annotatsioonid madalaimast prioriteedivรครคrtusest kรตrgeimani. Prioriteedinumbrid ei pea olema jรคrjestikused.
HTML-aruanne kinnitab, et meetodid kรคivitati kasvavas prioriteetsuse jรคrjekorras.
Mitu parameetrit
Peale priority, @Test aktsepteerib alwaysRun parameeter (tรตene vรตi vรครคr). Kahe vรตi enama parameetri kasutamiseks รผhes mรคrkuses eraldage need komaga:
@Test(priority = 0, alwaysRun = true)
@BeforeTest ja @AfterTest
| @BeforeTest | Selle annotatsioonitsรผkli meetodid enne esimest testijuhtumit TestNG fail. |
| @AfterTest | Selle annotatsioonitsรผkli meetodid pรคrast kรตiki testjuhtumeid TestNG viili viimistlus. |
Mรตelge allolevale koodile.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
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/";
public WebDriver driver;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
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.quit();
}
}
Tabeli ja koodi pรตhjal vรตime ennustada, et jรคrjestus on jรคrgmine:
- 1. โ
launchBrowser() - 2. โ
verifyHomepageTitle() - 3. โ
terminateBrowser()
Mรคrkusplokkide paigutus lรคhtefailis ei mรตjuta nende tรคitmise jรคrjekorda. Proovige meetodeid รผmber korraldada, nagu allpool nรคidatud.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
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/";
public WebDriver driver;
@AfterTest // Jumbled
public void terminateBrowser() {
driver.quit();
}
@BeforeTest // Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
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รคivita kood ja kontrolli tulemust.
@BeforeMethod ja @AfterMethod
| @BeforeMethod | Selle annotatsioonitsรผkli meetodid enne iga katsemeetodit. |
| @AfterMethod | Selle annotatsioonitsรผkli meetodid pรคrast iga katsemeetodit. |
In Mercury Tuurid, oletame, et tahame kontrollida kahe sihtlehe pealkirju, millele avalehelt jรตudsime.
Testi voog on jรคrgmine:
- Ava avaleht ja kontrolli selle pealkirja.
- Klรตpsake REGISTER ja kinnitage selle sihtlehe pealkiri.
- Mine tagasi avalehele ja kontrolli pealkirja.
- Klรตpsake nuppu TUGI ja kinnitage selle sihtlehe pealkiri.
- Mine tagasi avalehele ja kontrolli uuesti pealkirja.
Allolev kood nรคitab, kuidas @BeforeMethod ja @AfterMethod korduvaid samme kรคsitlevad.
package firsttestngpackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
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/";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
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.quit();
}
}
Pรคrast testi kรคivitamist TestNG annab teada allolevast jรคrjestusest.
Lรผhidalt: asetage seadistussammud sissepoole @BeforeMethod ja puhastamine vรตi navigeerimise lรคhtestamine sees @AfterMethod seega iga test algab ja lรตpeb teadaolevas olekus.
Kokkuvรตte TestNG Annotatsioonid
- @EnneSuite'i: kรคivitub enne kรตiki komplektis olevaid teste.
- @AfterSuite: kรคivitub pรคrast kรตiki komplektis tehtud teste.
- @EnneTesti: kรคivitub enne mis tahes testimismeetodit, mis kuulub klassidesse a sees silt.
- @AfterTest: kรคivitub pรคrast kรตiki testimismeetodeid, mis kuuluvad a-siseste klasside hulka silt.
- @EnneGroups: kรคivitub vahetult enne esimest testimismeetodit, mis kuulub mis tahes loetletud rรผhma.
- @AfterGroups: kรคivitub varsti pรคrast viimast loetletud rรผhma kuuluvat testimismeetodit.
- @EnneKlassi: kรคivitub enne praeguse klassi esimest testimismeetodit.
- @PรคrastKlassi: kรคivitub pรคrast kรตiki praeguse klassi testimismeetodeid.
- @EnneMeetodit: kรคivitub enne iga testimismeetodit.
- @AfterMethod: kรคivitub pรคrast iga testimismeetodit.
- @Test: mรคrgib meetodi testjuhtumina.


































