TestNG oktatóanyag: Mi az, kommentárok és amp; Keret a szelénben

Tartalomjegyzék:

Anonim

Mi a TestNG?

A TestNG egy automatizálási tesztelési keretrendszer, amelyben az NG a "Next Generation" kifejezést jelenti. A TestNG-t a JUnit ihlette, amely a (@) kommentárokat használja. A TestNG legyőzi a JUnit hátrányait, és úgy lett kialakítva, hogy megkönnyítse a végpontok közötti tesztelést.

A TestNG használatával megfelelő jelentést készíthet, és könnyen megismerheti, hogy hány teszteset került át, sikertelen és kihagyott. A sikertelen teszteseteket külön is végrehajthatja.

Például:

  • Tegyük fel, hogy öt tesztesete van, mindegyik tesztesetre egy módszert írnak (Tegyük fel, hogy a programot a fő módszerrel írják, a testNG használata nélkül). Amikor először futtatja ezt a programot, három módszer sikeresen végrehajtásra kerül, a negyedik módszer pedig sikertelen. Ezután javítsa ki a negyedik módszer hibáit, most csak a negyedik módszert akarja futtatni, mert az első három módszert egyébként sikeresen végrehajtják. Ez nem lehetséges a TestNG használata nélkül.
  • A szelénben található TestNG lehetőséget kínál, azaz a testng-fail.xml fájlt a teszt-output mappában. Ha csak sikertelen teszteseteket akar futtatni, az azt jelenti, hogy ezt az XML fájlt futtatja. Csak sikertelen teszteseteket hajt végre.

A fenti koncepció mellett többet megtudhat a TestNG-ről, például a TestNG előnyeiről, hogyan hozhat létre tesztmódszereket a @test annotációk segítségével, hogyan alakíthatja ezeket az osztályokat tesztelési csomagfájlokká, és hajthatja végre a napfogyatkozáson keresztül, valamint a parancssorból .

Ebben a TestNG oktatóanyagban megtanulja

  • Miért használja a TestNG-t szelénnel?
  • A TestNG előnyei a JUnittel szemben
  • Hozzon létre tesztesetet a TestNG kommentárok használatával
  • Új TestNG tesztfájl létrehozása
    • Az első TestNG teszteset példánk kódolása
    • A teszt futtatása
  • A TestNG által létrehozott jelentések ellenőrzése
  • A TestNG-ben használt kommentárok
  • Több teszteset
  • Paraméterek
    • Több paraméter
    • A TestNG kommentárok összefoglalása

Miért használja a TestNG-t szelénnel?

Az alapértelmezett szeléntesztek nem hoznak létre megfelelő formátumot a teszt eredményei számára. A TestNG szelénben történő felhasználásával teszt eredményeket generálhatunk.

A legtöbb szelénfelhasználó előnyei miatt ezt használja jobban, mint a Junit. A TestNG annyi funkcióval rendelkezik, de csak a legfontosabbakra fogunk összpontosítani, amelyeket a szelénben használhatunk. Az alábbiakban bemutatjuk a Selenium TestNG legfontosabb jellemzőit:

  • Létrehozza a jelentést megfelelő formátumban, beleértve a számos tesztfutást, a letett tesztesetek, a sikertelen tesztesetek és az átugrott tesztesetek számát.
  • Több teszteset könnyebben csoportosítható, ha testng.xml fájlba konvertálja őket. Amelyben megadhatja a prioritásokat, melyik tesztesetet kell először végrehajtani.
  • Ugyanaz a teszteset többször is végrehajtható ciklusok nélkül, csak az úgynevezett kulcsszó használatával.
  • A testng használatával több tesztesetet is lefuttathat több böngészőben, azaz keresztböngészőtesztelést végezhet.
  • A TestNG keretrendszer könnyen integrálható olyan eszközökkel, mint a TestNG Maven, Jenkins stb.
  • A tesztelés során használt kommentárok nagyon könnyen érthetők, például: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • A WebDriver nem rendelkezik natív mechanizmussal a jelentések létrehozásához. A TestNG a jelentést az alábbiakhoz hasonlóan olvasható formátumban készítheti el.
  • A TestNG leegyszerűsíti a tesztek kódolását. Nincs többé szükség statikus fő módszerre tesztjeink során. A műveletek sorrendjét könnyen érthető annotációk szabályozzák, amelyekhez nincs szükség statikus módszerekre.
  • A be nem fogott kivételeket a TestNG automatikusan kezeli, anélkül, hogy a tesztet idő előtt befejezné. Ezeket a kivételeket a jelentés sikertelen lépésként jelenti.

A TestNG előnyei a JUnittel szemben

A TestNG három fő előnye van a JUnittel szemben:

  • A kommentárokat könnyebb megérteni
  • A tesztesetek könnyebben csoportosíthatók
  • Párhuzamos tesztelés lehetséges

A TestNG kommentárjai olyan kódsorok, amelyek vezérelhetik az alattuk lévő módszer végrehajtását . Mindig előtte a @ szimbólum áll. Egy nagyon korai és gyors TestNG példa az alábbiakban látható.

A kommentárokat később tárgyaljuk a "TestNG-ben használt kommentárok" című részben, tehát teljesen rendben van, ha még nem érted a fenti TestNG példát. Csak egyelőre fontos megjegyezni, hogy a TestNG annotációit könnyebb kódolni és megérteni, mint a JUnit-ben.

A tesztek párhuzamos futtatásának lehetősége elérhető a TestNG-ben, de a JUnit-ben nem, ezért a TestNG keretrendszer előnyösebb a szelénrácsot használó tesztelők számára.

Hozzon létre tesztesetet a TestNG kommentárok használatával

Most megtanuljuk, hogyan hozzuk létre első tesztesetünket a szelénben található TestNG kommentárok használatával:

Mielőtt létrehoznánk egy tesztesetet, először be kell állítanunk egy új TestNG projektet az Eclipse programban, és el kell neveznünk azt "FirstTestNGProject" néven.

Új TestNG projekt beállítása

1. lépés: Kattintson a Fájl> Új> Java projekt elemre

2. lépés: Írja be a "FirstTestNGProject" nevet a projekt neveként, majd kattintson a Tovább gombra.

3. lépés: Most elkezdjük importálni a TestNG könyvtárakat a projektünkbe. Kattintson a "Könyvtárak" fülre, majd a "Könyvtár hozzáadása" elemre

… "

4. lépés: A Könyvtár hozzáadása párbeszédpanelen válassza a "TestNG" lehetőséget, majd kattintson a Tovább gombra.

5. lépés: Kattintson a Befejezés gombra.

Észre kell vennie, hogy a TestNG szerepel a Könyvtárak listában.

6. lépés: Most hozzáadjuk azokat a JAR fájlokat, amelyek tartalmazzák a Selenium API-t. Ezek a fájlok a Java kliens illesztőprogramban találhatók, amelyet a http://docs.seleniumhq.org/download/ webhelyről töltöttünk le, amikor a Selenium és az Eclipse telepítését az előző fejezetekbe telepítettük.

Ezután keresse meg a Selenium JAR fájlokat.

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

7. lépés: Kattintson a Befejezés gombra, és ellenőrizze, hogy az FirstTestNGProject látható-e az Eclipse Csomagkezelő ablakában.

Új TestNG tesztfájl létrehozása

Most, hogy befejeztük a projektünk beállítását ebben a TestNG oktatóanyagban, hozzunk létre egy új TestNG fájlt.

1. lépés: Kattintson a jobb gombbal az "src" csomagmappára, majd válassza az Új> Egyéb lehetőséget

2. lépés: Kattintson a TestNG mappára, és válassza a "TestNG class" lehetőséget. Kattintson a Tovább gombra.

3. lépés: Írja be az alább megadott értékeket a megfelelő beviteli mezőbe, majd kattintson a Befejezés gombra. Figyelje meg, hogy Java fájlunkat "FirstTestNGFile" néven neveztük el.

Az Eclipse-nek automatikusan létre kell hoznia az alább látható TestNG fájl sablonját.

Az első TestNG teszteset példánk kódolása

Most hozzuk létre az első tesztesetet, amely ellenőrzi, hogy a Mercury Tours honlapja helyes-e. Írja be a kódot az alábbi TestNG példa szerint:

csomag 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 = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";nyilvános WebDriver illesztőprogram;@Tesztpublic void VerifyHomepageTitle () {System.out.println ("Firefox böngésző indítása");System.setProperty ("webdriver.gecko.driver", driverPath);illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);String várhatóTitle = "Üdvözöljük: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, várhatóTitle);driver.close ();}}

Figyelje meg a következőket.

  • A TestNG nem igényli a main () metódus használatát.
  • A módszereknek nem kell statikusaknak lenniük.
  • A @Test jelölést használtuk. A @Test segítségével azt mondhatjuk, hogy az alatta lévő módszer teszteset . Ebben az esetben a VerHomepageTitle () metódust állítottuk be tesztesetünknek, ezért egy „@Test” feljegyzést tettünk fölé.
  • Mivel a TestNG-ben annotációkat használunk, importálnunk kellett az org.testng.annotations. * Csomagot.
  • Az Assert osztályt használtuk. Az Assert osztályt a TestNG ellenőrzési műveleteinek végrehajtására használják . Használatához importálnunk kell az org.testng.Assert csomagot.

Lehet, hogy egyetlen tesztNG fájlban több teszteset (tehát több @ teszt teszt) található. Erről a későbbiekben a "TestNG-ben használt kommentárok" részben foglalkozunk.

A teszt futtatása

A teszt futtatásához egyszerűen futtassa a fájlt az Eclipse-ben a szokásos módon. Az Eclipse két kimenetet biztosít - az egyiket a Konzol ablakban, a másikat pedig a TestNG eredmények ablakban.

A TestNG által létrehozott jelentések ellenőrzése

Az Eclipse Console ablaka szöveges jelentést ad a tesztesemény eredményeinkről, míg a TestNG Results ablak grafikusan.

HTML jelentések generálása

A TestNG képes HTML-formátumban jelentéseket készíteni.

1. lépés: Az előző szakaszban létrehozott FirstTestNGFile futtatása után kattintson a jobb gombbal a Projekt nevére (FirstTestNGProject) a Project Explorer ablakban, majd kattintson a "Frissítés" lehetőségre.

2. lépés: Figyelje meg, hogy létrejött egy "teszt-output" mappa. Bontsa ki, és keressen egy index.html fájlt. Ez a HTML fájl a legutóbbi tesztfuttatás eredményeinek jelentése.

3. lépés: Kattintson duplán arra az index.html fájlra, hogy megnyissa az Eclipse beépített webböngészőjében. A teszt ismételt futtatása után bármikor frissítheti ezt az oldalt az F5 egyszerű megnyomásával, csakúgy, mint a szokásos webböngészőkben.

A TestNG-ben használt kommentárok

Az előző részben bemutattuk a @Test jelölést. Most fejlettebb kommentárokat és azok felhasználását fogjuk tanulmányozni.

Több teszteset

Egy TestNG fájlban több @Test jelölést is használhatunk. Alapértelmezés szerint a @Test által jegyzetelt módszereket ábécé sorrendben hajtják végre. Lásd az alábbi kódot. Bár a c_test, a_test és a b_test metódusok nincsenek ábécé sorrendben elhelyezve a kódban, azokat önmagukban hajtják végre.

Futtassa ezt a kódot, és a létrehozott index.html oldalon kattintson a "Kronológiai nézet" gombra.

Paraméterek

Ha azt szeretné, hogy a metódusok más sorrendben kerüljenek végrehajtásra, használja a "prioritás" paramétert. A paraméterek olyan kulcsszavak, amelyek módosítják az annotáció funkcióját .

  • A paraméterek megkövetelik, hogy értéket rendeljen hozzájuk. Ezt úgy teszed meg, hogy -t teszel melléjük, majd követed az értéket.
  • A paraméterek zárójelek közé vannak foglalva, amelyeket közvetlenül az annotáció után helyeznek el, mint az alább látható kódrészlet.

A TestNG végrehajtja a @Test jelölést a legkisebb prioritási értékkel, a legnagyobbig. Nem szükséges, hogy a prioritási értékei egymás után legyenek.

A TestNG HTML jelentés megerősíti, hogy a módszereket a prioritás növekvő értéke alapján hajtották végre.

Több paraméter

A "prioritás" mellett a @Test rendelkezik egy másik, "alwaysRun" nevű paraméterrel, amelyet csak "igaz" vagy "hamis" lehet beállítani. Két vagy több paraméter egyetlen megjegyzésben történő használatához válassza el őket vesszővel , például az alábbiakkal.

@Test (prioritás = 0, alwaysRun = true)

@BeforeTest és @AfterTest

@BeforeTest

Az ebben a feljegyzésben szereplő módszereket a TestNG fájl első tesztesete előtt hajtják végre .

@AfterTest

Az ebben az annotációban szereplő módszerek a TestNG fájl összes tesztesetének végrehajtása után kerülnek végrehajtásra .

Vegye figyelembe az alábbi kódot.

csomag 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 = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";nyilvános WebDriver illesztőprogram;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefox böngésző indítása");System.setProperty ("webdriver.gecko.driver", driverPath);illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);}@Tesztpublic void VerifyHomepageTitle () {String várhatóTitle = "Üdvözöljük: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, várhatóTitle);}@AfterTestpublic void terminateBrowser () {driver.close ();}}

A táblázat által bemutatott logika és a fenti kód alkalmazásával megjósolhatjuk, hogy a metódusok végrehajtásának sorrendje:

  • 1. st - launchBrowser ()
  • 2 ND - verifyHomepageTitle ()
  • 3. vég - böngésző ()

Az annotációs blokkok elhelyezése felcserélhető anélkül, hogy befolyásolná a végrehajtásuk időrendjét . Értsük meg egy TestNG példával, és próbáljuk meg úgy átrendezni a megjegyzésblokkokat, hogy a kód hasonló legyen az alábbihoz.

csomag 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 = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";nyilvános WebDriver illesztőprogram;@AfterTest // Jumbledpublic void terminateBrowser () {driver.close ();}@BeforeTest // Jumbledpublic void launchBrowser () {System.out.println ("Firefox böngésző indítása");System.setProperty ("webdriver.gecko.driver", driverPath);illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);}@Teszt // Zűrzavarpublic void VerifyHomepageTitle () {String várhatóTitle = "Üdvözöljük: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, várhatóTitle);}}

Futtassa a fenti kódot, és vegye észre

@BeforeMethod és @AfterMethod

@BeforeMethod

Az ebben az annotációban szereplő módszereket minden tesztesemény előtt az egyes módszerek előtt hajtják végre .

@AfterMethod

Az ebben az annotációban szereplő módszereket minden tesztesemény után az egyes módszerek után hajtják végre .

Tegyük fel, hogy a Mercury Tours alkalmazásban szeretnénk ellenőrizni az alábbi két link céloldalainak címeit.

A tesztünk folyamata a következő lenne:

  • Menjen a kezdőlapra, és ellenőrizze a címét.
  • Kattintson a REGISZTRÁLÁS gombra, és ellenőrizze a céloldal címét.
  • Menjen vissza a kezdőlapra, és ellenőrizze, hogy annak címe még mindig megfelelő-e.
  • Kattintson a TÁMOGATÁS gombra, és ellenőrizze a céloldal címét.
  • Menjen vissza a kezdőlapra, és ellenőrizze, hogy annak címe még mindig megfelelő-e.

Az alábbi kód szemlélteti, hogy a @BeforeMethod és @AfterMethod hogyan használhatók a fent említett forgatókönyv hatékony végrehajtására.

csomag firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;@Tesztpublic class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";nyilvános WebDriver illesztőprogram;public String várható = null;public String aktuális = null;@BeforeTestpublic void launchBrowser () {System.out.println ("Firefox böngésző indítása");System.setProperty ("webdriver.gecko.driver", driverPath);illesztőprogram = new FirefoxDriver ();driver.get (baseUrl);}@BeforeMethodpublic void VerifyHomepageTitle () {String várhatóTitle = "Üdvözöljük: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, várhatóTitle);}@Test (prioritás = 0)public void register () {driver.findElement (By.linkText ("REGISZTRÁL")). kattintson ();várható = "Regisztráció: Mercury Tours";tényleges = driver.getTitle ();Assert.assertEquals (tényleges, várható);}@Test (prioritás = 1)public void support () {driver.findElement (By.linkText ("TÁMOGATÁS")). kattintson ();várható = "Építés alatt: Mercury Tours";tényleges = driver.getTitle ();Assert.assertEquals (tényleges, várható);}@AfterMethodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Home")). kattintson ();}@AfterTestpublic void terminateBrowser () {driver.close ();}}

A teszt végrehajtása után a TestNG-nek a következő sorrendet kell jelentenie.

Egyszerűen fogalmazva: A @BeforeMethod-nak tartalmaznia kell azokat módszereket, amelyeket minden teszteset előtt futtatnia kell, míg a @AfterMethod-nak tartalmaznia kell olyan módszereket, amelyeket minden teszteset után futtatnia kell .

A TestNG kommentárok összefoglalása

@BeforeSuite : Az annotált módszer futtatásra kerül, mielőtt a csomag összes tesztje lefutna .

@AfterSuite : A jegyzetekkel ellátott módszer futtatásra kerül, miután a csomag összes tesztje lefutott.

@BeforeTest : Az annotált módszer futtatásra kerül, mielőtt a címkén belüli osztályokba tartozó bármely tesztmódszert futtatnák .

@AfterTest : A jegyzetekkel ellátott módszer futtatása után a címkén belüli osztályokba tartozó összes vizsgálati módszer fut.

@BeforeGroups : Az a csoportok listája, amelyeket ez a konfigurációs módszer korábban futtatni fog. Ez a módszer garantáltan futni fog röviddel azelőtt, hogy meghívnánk az első vizsgálati módszert, amely e csoportok bármelyikéhez tartozik.

@AfterGroups : Azon csoportok listája, amelyek után ez a konfigurációs módszer futni fog. Ez a módszer garantáltan futni fog röviddel azután, hogy az utolsó vizsgálati módszert meghívták, amely ezekhez a csoportokhoz tartozik.

@BeforeClass : Az annotált módszer az aktuális osztály első tesztmódszerének meghívása előtt fog futni.

@AfterClass : Az annotált módszer az aktuális osztály összes tesztmódszerének futtatása után fog futni.

@BeforeMethod : Az annotált módszer minden tesztmódszer előtt lefut.

@AfterMethod : Az annotált módszer minden tesztmódszer után lefut.

@Test : Az annotált módszer egy teszteset része

Következtetés

  • A TestNG egy tesztelési keretrendszer, amely képes a szelén teszteket könnyebben érthetővé tenni, és könnyen érthető jelentéseket készíteni.
  • A TestNG fő előnyei a JUnittel szemben a következők.
    • A kommentárokat könnyebb használni és megérteni.
    • A tesztesetek könnyebben csoportosíthatók.
    • A TestNG lehetővé teszi számunkra, hogy párhuzamos teszteket hozzunk létre.
  • Az Eclipse Konzol ablaka szövegalapú eredményt generál, míg a TestNG ablak hasznosabb, mert grafikus kimenetet ad a teszt eredményének, valamint egyéb értelmes részleteket, például:
    • Az egyes módszerek futási ideje.
    • A módszerek végrehajtásának időrendje
  • A TestNG képes HTML-alapú jelentések készítésére.
  • A kommentárok a szokásos Java TestNG módszerekhez hasonlóan használhatnak paramétereket.
  • A TestNG Dataprovider egy olyan módszer, amellyel a paramétereket átadhatja a tesztfunkciónak, amely egyetlen végrehajtás során különböző értékeket ad át teszt esetekben.