TestNG Kezdőknek

⚡ Okos összefoglaló

TestNG egy következő generációs Java tesztelési keretrendszer, amely párosul a Selenium strukturált automatizáláshoz, gazdag jelentéskészítéshez és párhuzamos végrehajtáshoz. Ez az oktatóanyag a főbb annotációkat, a projektbeállítást ismerteti Eclipse, az első teszteset megírása, HTML-jelentések és haladó paraméterhasználat.

  • 🧱 Alapvető keretrendszer: TestNG nyúlik JUnit ötletek jegyzetekkel, csoportping, és párhuzamos tesztfuttatás a következőhöz: Selenium lakosztályok.
  • 🏷️ Jegyzetek átviteli folyamata: @Test, @BeforeMethod, @AfterMethod, @BeforeTest és @AfterTest szekvencia beállítása, tesztelése és lebontása.
  • 🗂️ Eclipse Beállítás: Build a TestNG projekt, add hozzá a TestNG könyvtár és Selenium JAR fájlokat, majd tesztosztályokat generáljon a varázslóból.
  • 📊 Jelentés: TestNG szöveges, grafikus és HTML-jelentéseket készít a test-output mappában, beleértve a kronológiai nézeteket is.
  • 🇧🇷 paraméterek: A végrehajtási sorrend szabályozásához és az adatok tesztekbe való betáplálásához használd a priority, az alwaysRun és a dataProvider metódusokat.
  • 🤖 AI Boost: A mesterséges intelligencia által fejlesztett kódoló asszisztensek felgyorsulnak TestNG osztálygenerálás, lokátorfrissítések és adatszolgáltatói állványozás.

TestNG Kezdőknek

Mi a TestNG?

TestNG egy automatizált tesztelési keretrendszer, ahol az „NG” a „Next Generation” (Következő generáció) rövidítése. TestNG ihlette JUnit és felhasznál Java annotációk (@) a tesztfolyamat szabályozásához. Legyőzi JUnitkorábbi korlátait, és úgy tervezték, hogy végpontok közötti tesztelés könnyebb.

A TestNG Létrehozhat egy megfelelő jelentést, és azonnal láthatja, hogy hány teszt sikerült, hány sikertelen vagy kimaradt. A sikertelen eseteket is újrafuttathatja.

Például:

  • Tegyük fel, hogy öt teszteseted van, mindegyiket a saját metódusában, anélkül, hogy TestNGHárom sikeres; a negyedik nem. A negyedik kijavítása után csak azt az egyet szeretnéd újrafuttatni, mivel az első három már sikeresen ment. Ezt nehéz megtenni sima main()-metódus kóddal.
  • TestNG biztosít testng-failed.xml fájl a test-output mappa. Az XML futtatása csak a sikertelen eseteket hajtja végre újra.

Ezen túlmenően, megismerheti az előnyeit TestNG, hogyan írjunk tesztmetódusokat @Test annotációkkal, és hogyan konvertáljuk az osztályainkat egy olyan tesztkészletté, amely a következő címről fut: Eclipse vagy a parancssorból.

Miért használja TestNG ahol Selenium?

Alapértelmezésben, Selenium a tesztek nem szépen formázott eredményeket hoznak. TestNG csatlakoztatva, a tesztfuttató egy strukturált jelentést készít, amelyet megoszthat a csapattal.

híd Selenium a felhasználók előnyben részesítik TestNG felett JUnit szélesebb funkciókészlete miatt. A legfontosabb funkciók a következők: Selenium vannak:

  • Jelentések, amelyek tartalmazzák a futtatott, sikeres, sikertelen és kihagyott tesztesetek számát.
  • Könnyű talajping tesztesetek egy testng.xml fájl, végrehajtási prioritásokkal.
  • Ismételd meg a tesztet többször ciklusok nélkül a következővel: invocationCount.
  • Több teszt futtatása több böngészőn – kereszt-böngésző tesztelése támogatást.
  • Zökkenőmentes integráció a Mavennel, Jenkinsés egyéb CI-eszközök.
  • Readable annotációk – például @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
  • Selenium A WebDriver nem rendelkezik natív jelentéskészítéssel; TestNG kitölti ezt a hiányt egy letisztult HTML-jelentéssel, mint például az alább látható.

TestNG HTML jelentésminta a következőhöz: Selenium tesztek

  • TestNG leegyszerűsíti a tesztkódot. Nincs szükség többé statikus main metódusra; az annotációk döntik el, hogy mi és mikor fut le.

Szokásos Java tesztosztály struktúra main metódussal

TestNG tesztelje az osztálystruktúrát annotációk használatával

  • A nem észlelt kivételeket elegánsan kezeli a TestNGSikertelen lépésként jelentik őket a teljes futtatás leállítása nélkül.

Előnyei TestNG felett JUnit

TestNG három fő előnyt kínál a JUnit:

  • A megjegyzések könnyebben érthetők és használhatók.
  • A tesztesetek kevesebb erőfeszítéssel csoportosíthatók és rangsorolhatók.
  • A párhuzamos tesztfuttatás alapból támogatott.

Mi az annotáció a következőben: TestNG?

Megjegyzések be TestNG olyan kódsorok, amelyek egy metódus fölé helyeződnek, és a metódus végrehajtását szabályozzák. Mindig a @ szimbólummal kezdődnek. Egy egyszerű példa látható alább.

Példa TestNG jegyzet felett egy Java módszer

A megjegyzéseket részletesen tárgyaljuk a következő részben. „Használt jegyzetek” TestNG" később ebben az oktatóanyagban, így a fenti példa csak az elvárások meghatározására szolgál. TestNG annotációkat könnyebb kódolni és olvasni, mint a JUnit ekvivalensek, és ezek elengedhetetlenek a tesztek futtatásakor Selenium Rács ahol a párhuzamos végrehajtás számít.

Hogyan írjunk teszteseteket TestNG

Írás a TestNG A teszteset három lépésből áll:

  1. Írd le az üzleti logikádat és helyezd el TestNG az egyes módszerek feletti megjegyzések.
  2. Adjon hozzá metaadatokat, például az osztály nevét, a csoport nevét és a csomag nevét.
  3. Futtassa a TestNG osztályt az IDE-ből vagy a parancssorból.

Teszteset létrehozása a következővel: TestNG Magyarázatok

Most létrehozzuk az első tesztesetünket a következő használatával: TestNG jegyzetek SeleniumA teszt megírása előtt állítson be egy új TestNG projekt in Eclipse és hívd fel vezetéknévTestNGNetPoulSafe projekt.

Új beállítása TestNG NetPoulSafe projekt

Step 1) Kattints Fájl > Új > Java NetPoulSafe projekt.

Eclipse menü egy új létrehozásához Java program

Step 2) belép vezetéknévTestNGNetPoulSafe projekt a projekt neveként, és kattintson a Következő.

Újszerű Java projekt varázsló First névvelTestNGNetPoulSafe projekt

Step 3) Importálja a TestNG könyvtárak. Kattintson a könyvtárak fülön és aztán Könyvtár hozzáadása….

Könyvtárak fül Könyvtár hozzáadása opcióval Eclipse

Step 4) A Könyvtár hozzáadása párbeszédablakban válassza ki TestNG és kattintson Következő.

kiválasztása TestNG a Könyvtár hozzáadása párbeszédpanelen

Step 5) Kattints befejez.

A Könyvtár hozzáadása varázsló befejezése

TestNG mostantól meg kell jelennie a Könyvtárak listában.

TestNG látható a Könyvtárak listában

Step 6) Adja hozzá a JAR fájlokat, amelyek tartalmazzák a Selenium API. Ezek a következőtől származnak: Java kliens illesztőprogram letöltve innen selenium.dev/letöltések.

Külső JAR fájlok hozzáadása párbeszédpanel Eclipse

Navigáljon ahhoz a mappához, ahol a Selenium A JAR fájlok tárolva vannak.

kiválasztása Selenium JAR fájlok a build útvonalhoz

A külső JAR fájlok hozzáadása után a képernyőnek így kell kinéznie.

Selenium JAR fájlok hozzáadva a Könyvtárak listájához

Step 7) Kattints befejez. Az új vezetéknévTestNGNetPoulSafe projekt megjelenik a Csomagböngészőben.

vezetéknévTestNGA projekt látható a Csomagkezelőben

Hogyan hozzunk létre újat TestNG Tesztfájl

Miután a projekt elkészült, hozz létre egy újat TestNG fájlt.

Step 1) Kattintson a jobb gombbal a src mappa és válasszon Új > Egyéb….

Új Egyéb menü az src mappából a Eclipse

Step 2) Bontsa ki a TestNG mappát, válassza ki TestNG osztály, és kattintson a gombra Következő.

TestNG osztálybeállítás az Új varázslóban

Step 3) Írja be az alább látható értékeket, majd kattintson a befejez Az Java a fájl neve vezetéknévTestNGfilé.

TestNG osztályú varázsló az ElsővelTestNGFájlértékek

Step 4) Eclipse generálja a TestNG az alább látható sablon.

Kivált TestNG osztálysablon Eclipse szerkesztő

Az első kódolás TestNG Teszt eset

Hozd létre az elsőt próbaper amely igazolja a címet Mercury A túrák honlapja.

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();
    }
}

Amire érdemes odafigyelni:

  • TestNG nem kell egy main() módszer.
  • A metódusoknak nem kell statikusnak lenniük.
  • Az @Teszt jegyzetjelek verifyHomepageTitle() tesztesetként.
  • A jegyzetek itt találhatók: org.testng.annotations.* csomag.
  • Az assert osztályból org.testng.Assert meghajtók ellenőrzései.

Több @Test annotációd is lehet egyetlen fájlban. TestNG fájlban. Ezt a fájlban tárgyaljuk. „Használt jegyzetek” TestNG" szakasz.

A teszt futtatása

Kattintson a jobb gombbal a fájlra, és futtassa azt egy TestNG teszt. Eclipse két kimenetet eredményez – egy szöveges eredményt a konzolablakban és egy grafikus eredményt a TestNG Eredmények ablak.

TestNG Eredményablak a teszt eredményével

Eclipse Konzol ablak TestNG szöveges kimenet

Jelentések ellenőrzése Készítette TestNG

A Konzol ablak szöveges összefoglalót jelenít meg, míg a TestNG Az eredményablak grafikus nézetet jelenít meg.

Szöveg vs. grafika TestNG eredmény-összehasonlítás

HTML jelentések generálása

TestNG teljes HTML jelentéseket is képes generálni.

Step 1) Futtatás után vezetéknévTestNGfilé, kattintson jobb gombbal a projektre, és válassza a felfrissít.

Frissítési lehetőség a következőhöz: TestNG projekt in Eclipse

Step 2) A tesztkimenet megjelenik a mappa. Bontsa ki, és keresse meg index.html — a legutóbbi futtatás HTML-jelentése.

test-output mappa, kiemelve az index.html fájlt

Step 3) Double-kattints index.html hogy belülről kinyissa Eclipseböngészője. A jövőbeli futtatások után nyomja meg az F5 billentyűt a frissítéshez.

TestNG HTML indexjelentés megjelenítése itt: Eclipse

Használt jegyzetek TestNG

Már láttad a @Test annotációt. A szakasz további része a leghasznosabb haladó annotációkat tárgyalja.

Több teszteset

Egyetlen TestNG A fájl több @Test annotációt is tartalmazhat. Alapértelmezés szerint a @Test-tel annotált metódusok betűrendben futnak. Az alábbi kódban a metódusok c_test, a_testés b_test betűrendben futnak, függetlenül a forrás sorrendjétől.

Több @Test metódus egyetlen fájlban TestNG osztály

Futtassa a kódot és nyissa meg index.html. Kattints Kronológiai nézet.

Többszörös kronológiai áttekintése TestNG mód

paraméterek

Az alapértelmezett sorrend felülbírálásához használja a priority paraméter. A paraméterek olyan kulcsszavak, amelyek módosítják egy annotáció viselkedését.

  • Érték hozzárendelése =.
  • A paramétereket zárójelben, közvetlenül a megjegyzés után kell elhelyezni, az alábbiak szerint.

TestNG annotáció paraméter- és értékszintaxissal

TestNG A @Test annotációkat a legalacsonyabb prioritási értéktől a legmagasabbig hajtja végre. A prioritási számoknak nem kell egymást követőnek lenniük.

Teljes kód @Test prioritási paraméterekkel

A HTML-jelentés megerősíti, hogy a metódusok növekvő prioritási sorrendben hajtódnak végre.

TestNG növekvő prioritás szerint futtatott metódusokat bemutató jelentés

Több paraméter

Kívül priority, @Test elfogadja a alwaysRun paraméter (igaz vagy hamis). Két vagy több paraméter egyetlen annotációban való használatához vesszővel válassza el őket:

@Test(priority = 0, alwaysRun = true)

Példa több paraméterre egy @Test annotáción belül

@BeforeTest és @AfterTest

@BeforeTest Az annotáció futtatása alatt álló metódusok az első teszteset előtt TestNG filé.
@AfterTest Az annotáció futtatása alatt álló metódusok az összes teszteset után a TestNG reszelés befejezése.

Vegye figyelembe az alábbi kódot.

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();
    }
}

A táblázat és a kód alapján megjósolhatjuk, hogy a sorrend a következő lesz:

  • 1. — launchBrowser()
  • 2. — verifyHomepageTitle()
  • 3. — terminateBrowser()

A megjegyzésblokkok elhelyezése a forrásfájlban nem befolyásolja azok végrehajtási sorrendjét. Próbáld meg átrendezni a metódusokat az alábbiak szerint.

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);
    }
}

Futtassa a kódot, és ellenőrizze az eredményt.

TestNG az eredmény megerősíti a megrendelést a zavaros megjegyzések ellenére

@BeforeMethod és @AfterMethod

@BeforeMethod Az annotáció futtatása alatt álló metódusok minden vizsgálati módszer előtt.
@AfterMethod Az annotáció futtatása alatt álló metódusok minden vizsgálati módszer után.

In Mercury Túrák, tegyük fel, hogy ellenőrizni szeretnénk két, a kezdőlapról elért céloldal címét.

Három link innen Mercury A túrák honlapja

A teszt menete a következő:

  • Nyisd meg a kezdőlapot, és ellenőrizd a címét.
  • Kattintson a REGISZTRÁCIÓ gombra, és ellenőrizze a céloldal címét.
  • Menj vissza a főoldalra és ellenőrizd a címet.
  • Kattintson a TÁMOGATÁS gombra, és ellenőrizze a céloldal címét.
  • Menj vissza a főoldalra és ellenőrizd újra a címet.

Az alábbi kód bemutatja, hogyan kezeli a @BeforeMethod és az @AfterMethod az ismétlődő lépéseket.

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();
    }
}

A teszt futtatása után TestNG az alábbi sorozatot közli.

TestNG jelentéssorozat a BeforeMethod és AfterMethod használatával

Röviden: helyezze a beállítási lépéseket belülre @BeforeMethod és takarítás vagy navigáció visszaállítása belül @AfterMethod tehát minden teszteset egy ismert állapotban kezdődik és végződik.

Összefoglalása TestNG Magyarázatok

  • @BeforeSuite: a csomag összes tesztje előtt lefut.
  • @AfterSuite: a csomag összes tesztje után lefut.
  • @Tesztelés előtt: lefut minden olyan tesztmetódus előtt, amely a címke.
  • @AfterTest: lefut az összes, a csoporton belüli osztályokhoz tartozó tesztmetódus után. címke.
  • @BeforeGroups: röviddel az első, felsorolt ​​csoportba tartozó tesztmetódus előtt fut le.
  • @AfterGroups: röviddel az utolsó, bármelyik felsorolt ​​csoportba tartozó tesztmetódus után fut le.
  • @Osztály előtt: az aktuális osztály első tesztmetódusa előtt fut.
  • @AfterClass: az aktuális osztály összes tesztmetódusa után lefut.
  • @BeforeMethod: minden tesztelési módszer előtt lefut.
  • @AfterMethod: minden tesztmetódus után lefut.
  • @Teszt: tesztesetként jelöli meg a metódust.

GYIK

JUnit 5 modernizált JUnit a Jupiter API-val és a kiterjesztési modellel. TestNG továbbra is vezető szerepet tölt be a párhuzamos végrehajtásban, csomag szintű csoportosításbanping, a dependsOn és az DataProvider függvények. Sok Selenium csapatok választása TestNG végponttól végpontig terjedő lakosztályokhoz és JUnit 5 az egységtesztekhez.

Adj hozzá parallel=”methods” vagy parallel=”class” attribútumot, valamint egy thread-count attribútumot a címke a testng.xml fájlban. TestNG majd elosztja a tesztmetódusokat a szálak között, ami ideális a következőkhöz: Selenium Grid vagy felhőalapú böngészőfüggetlen futtatások.

Az @DataProvider több adathalmazt táplál egyetlen @Test metódusba. A szolgáltató minden sora egyetlen végrehajtást jelent. Ez az adatvezérelt módszerek standard mintája. Selenium űrlapokon, keresőmezőkön vagy bejelentkezési képernyőkön végzett tesztek.

Igen. AI kódoló asszisztensek generálnak TestNG csontvázakat készíthet, @Test metódusokat jegyzetelhet, Page Object osztályokat építhet, és DataProvider tömböket készíthet minta CSV fájlokból, jelentősen csökkentve az állványozási időt.

A generatív mesterséges intelligencia beolvassa a testng-results.xml és a Surefire naplókat, klaszterezi a hasonló hibákat, valószínűsíthető kiváltó okokat javasol, és Jira ticketeket készít. Ez lerövidíti az egyenetlen tesztek triázsát, és segít a minőségbiztosítási vezetőknek a konfigurációhibák javításának rangsorolásában.

Foglald össze ezt a bejegyzést a következőképpen: