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.
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.xmlfájl atest-outputmappa. 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.xmlfá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 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.
- 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.
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:
- Írd le az üzleti logikádat és helyezd el TestNG az egyes módszerek feletti megjegyzések.
- Adjon hozzá metaadatokat, például az osztály nevét, a csoport nevét és a csomag nevét.
- 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.
Step 2) belép vezetéknévTestNGNetPoulSafe projekt a projekt neveként, és kattintson a Következő.
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….
Step 4) A Könyvtár hozzáadása párbeszédablakban válassza ki TestNG és kattintson Következő.
Step 5) Kattints befejez.
TestNG mostantól meg kell jelennie 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.
Navigáljon ahhoz a mappához, ahol a Selenium A JAR fájlok tárolva vannak.
A külső JAR fájlok hozzáadása után a képernyőnek így kell kinéznie.
Step 7) Kattints befejez. Az új vezetéknévTestNGNetPoulSafe projekt megjelenik a Csomagböngésző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….
Step 2) Bontsa ki a TestNG mappát, válassza ki TestNG osztály, és kattintson a gombra Következő.
Step 3) Írja be az alább látható értékeket, majd kattintson a befejez Az Java a fájl neve vezetéknévTestNGfilé.
Step 4) Eclipse generálja a TestNG az alább látható sablon.
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.Assertmeghajtó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.
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.
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.
Step 2) A tesztkimenet megjelenik a mappa. Bontsa ki, és keresse meg index.html — a legutóbbi futtatás HTML-jelentése.
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.
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.
Futtassa a kódot és nyissa meg index.html. Kattints Kronológiai nézet.
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 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.
A HTML-jelentés megerősíti, hogy a metódusok növekvő prioritási sorrendben hajtódnak végre.
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)
@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.
@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.
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.
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.


































