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.

  • ๐Ÿงฑ Pรตhiraamistik: TestNG laieneb JUnit ideed mรคrkustega, rรผhmpingja paralleelne testide kรคivitamine Selenium sviidid.
  • ???? ๏ธ Mรคrkuste voog: @Test, @BeforeMethod, @AfterMethod, @BeforeTest ja @AfterTest jรคrjestuste seadistamine, testimine ja lahtivรตtmine.
  • ๐Ÿ—‚๏ธ Eclipse Setup: Ehitage a TestNG projekti, lisage TestNG raamatukogu ja Selenium JAR-failid ja seejรคrel genereerige viisardi abil testiklassid.
  • ๐Ÿ“Š Aruandlus: TestNG loob test-output kausta teksti-, graafilisi ja HTML-aruandeid, sealhulgas kronoloogilisi vaateid.
  • โš™๏ธ Parameetrid: Kasutage tรคitmisjรคrjekorra juhtimiseks ja testidesse andmete sisestamiseks funktsioone priority, alwaysRun ja dataProvider.
  • ๐Ÿค– Tehisintellekti vรตimendus: Tehisintellektiga kodeerimise assistendid kiirendavad TestNG klassi genereerimine, lokaatori vรคrskendused ja andmepakkuja tugisรผsteemid.

TestNG juhendaja

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.xml failil test-output kaust. 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.xml fail 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 HTML-aruande nรคidis Selenium testid

  • TestNG lihtsustab testkoodi. Sa ei vaja enam staatilist peamist meetodit; annotatsioonid otsustavad, mis ja millal kรคivitatakse.

Tavaline Java testklassi struktuur peamise meetodiga

TestNG testi klassi struktuuri annotatsioonide abil

  • 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.

Nรคide TestNG mรคrkus รผlalpool Java meetod

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:

  1. Kirjutage oma รคriloogika ja asetage see TestNG iga meetodi kohal olevad mรคrkused.
  2. Lisage metaandmed, nรคiteks klassi nimi, rรผhma nimi ja paketi nimi.
  3. 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.

Eclipse menรผรผ uue loomiseks Java projekt

Step 2) sisene esimeneTestNGProjekt projekti nimeks ja klรตpsake jรคrgmine.

Uus Java projektiviisard nimega FirstTestNGProjekt

Step 3) Importige TestNG teegid. Klรตpsake nuppu Raamatukogud vahelehel ja siis Lisa raamatukoguโ€ฆ.

Teekide vahekaart valikuga Lisa teek Eclipse

Step 4) aasta Lisa raamatukogu dialoogiboksis, valige TestNG ja kliki jรคrgmine.

valides TestNG dialoogiboksis Teegi lisamine

Step 5) Click lรตpp.

Lisa teeki viisardi lรตpuleviimine

TestNG peaks nรผรผd ilmuma teekide loendis.

TestNG nรคhtav teekide loendis

Step 6) Lisage JAR-failid, mis sisaldavad Selenium API. Need pรคrinevad Java kliendi draiver alla laaditud saidilt selenium.dev/allalaadimised.

Vรคlise JAR-faili lisamise dialoogiboks Eclipse

Navigeeri kausta, kuhu Selenium JAR-failid salvestatakse.

valides Selenium JAR-failid ehitustee jaoks

Pรคrast vรคliste JAR-ide lisamist peaks ekraan vรคlja nรคgema selline.

Selenium JAR-failid lisati teekide loendisse

Step 7) Click lรตpp. Uus esimeneTestNGProjekt ilmub paketihaldurisse.

esimeneTestNGProjekt on nรคhtav paketihalduris

Kuidas luua uut TestNG Testfail

Kui projekt on valmis, looge uus TestNG faili.

Step 1) Paremklรตpsake seda src kaust ja vali Uus > Muuโ€ฆ.

Uus menรผรผ src kaustast Eclipse

Step 2) Laienda TestNG kaust, valige TestNG klassja klรตpsake jรคrgmine.

TestNG klassi valik uues viisardis

Step 3) Sisestage allpool nรคidatud vรครคrtused ja klรตpsake lรตpp. Java fail on nimetatud esimeneTestNGFail.

TestNG klassi vรตlur FirstigaTestNGFaili vรครคrtused

Step 4) Eclipse genereerib TestNG allpool nรคidatud malli.

Genereeritud TestNG klassi mall sees Eclipse toimetaja

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.Assert draivide 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.

TestNG Tulemuste aken testi tulemusega

Eclipse Konsooli aken koos TestNG tekstivรคljund

Aruannete kontrollimine koostas TestNG

Konsooliaken pakub tekstipรตhist kokkuvรตtet, samal ajal kui TestNG Tulemuste aken kuvab graafilist vaadet.

Tekst vs graafiline TestNG tulemuste vรตrdlus

HTML-aruannete genereerimine

TestNG saab genereerida ka tรคielikke HTML-aruandeid.

Step 1) Pรคrast jooksmist esimeneTestNGFail, paremklรตpsake projektil ja valige vรคrskendama.

Vรคrskenda valikut TestNG projekt sisse Eclipse

Step 2) A test-vรคljund kaust ilmub. Laiendage seda ja leidke index.html โ€” viimase kรคivitamise HTML-aruanne.

test-output kaust, kus index.html on esile tรตstetud

Step 3) Double-klรตps index.html selle seestpoolt avama Eclipsebrauser. Pรคrast tulevasi kรคivitamisi vajutage vรคrskendamiseks F5.

TestNG HTML-indeksi aruanne renderdatud keeles Eclipse

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.

Mitu @Test meetodit รผhes TestNG klass

Kรคivita kood ja ava index.html. Klรตpsa Kronoloogiline vaade.

Mitmete kronoloogiline vaade TestNG meetodid

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 annotatsioon parameetri ja vรครคrtuse sรผntaksiga

TestNG Kรคivitab @Test annotatsioonid madalaimast prioriteedivรครคrtusest kรตrgeimani. Prioriteedinumbrid ei pea olema jรคrjestikused.

Tรคiskood @Test prioriteediparameetritega

HTML-aruanne kinnitab, et meetodid kรคivitati kasvavas prioriteetsuse jรคrjekorras.

TestNG aruanne, mis nรคitab kasvava prioriteedi jรคrgi kรคivitatud meetodeid

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)

Nรคide mitmest parameetrist @Test annotatsioonis

@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.

TestNG tulemus kinnitab tellimust vaatamata segastele mรคrkustele

@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.

Kolm linki saidilt Mercury Ekskursioonide koduleht

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.

TestNG Aruandejada, kasutades BeforeMethod ja AfterMethod

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.

KKK

JUnit 5 moderniseeritud JUnit Jupiteri API ja laiendusmudeli abil. TestNG endiselt paralleelse tรคitmise, sviiditaseme grupi liidridping, dependsOn ja DataProvider. Paljud Selenium meeskondade valik TestNG otsast lรตpuni sviitide ja JUnit 5 รผhiktestide jaoks.

Lisa parallel=โ€methodsโ€ vรตi parallel=โ€classesโ€ ja thread-count atribuut silt failis testng.xml. TestNG seejรคrel jaotab testimismeetodid lรตimede vahel, mis on ideaalne Selenium Ruudustiku vรตi pilve brauseriteรผlene tรถรถ.

@DataProvider edastab mitu andmekogumit รผhte @Test meetodisse. Iga pakkuja rida on รผks teostus. See on andmepรตhise analรผรผsi standardmuster. Selenium testid vormide, otsingukastide vรตi sisselogimisekraanide suhtes.

Jah. AI kodeerimisassistendid genereerivad TestNG skelette, annoteeri @Test meetodeid, ehita Page Object klasse ja mustandab DataProvideri massiive nรคidis-CSV-failidest, vรคhendades mรคrkimisvรครคrselt tellingute loomise aega.

Generatiivne tehisintellekt (AI) tรถรถtleb testng-results.xml ja Surefire'i logisid, grupeerib sarnaseid tรตrkeid, pakub vรคlja tรตenรคolisi algpรตhjuseid ja koostab Jira pileteid. See lรผhendab ebaรผhtlase testimise triaaลพi ja aitab kvaliteedikontrolli juhtidel CI-parandusi tรคhtsuse jรคrjekorda seada.

Vรตta see postitus kokku jรคrgmiselt: