Adatszolgáltató és TestNG XML:
Amint szoftvereket készítünk, mindig azt kívánjuk, hogy más-más adatokkal másképp működjön. Amikor ugyanannak a szoftvernek a tesztelésére kerül sor, nem lehetünk igazságtalanok, ha csak egy adathalmazzal teszteljük. Itt is meg kell győződnünk arról, hogy a rendszerünk minden olyan kombinációkészletet figyelembe vesz, amelyet várhatóan támogat. Ehhez paramétereznünk kell a tesztünk scipts paramétereit. Itt jön a képbe a paraméterezés.
Paraméterezés a Seleniumban
A paraméterezés a Seleniumban a tesztszkriptek paraméterezése annak érdekében, hogy futásidőben több adatot adjunk át az alkalmazásnak. Ez egy olyan végrehajtási stratégia, amely automatikusan többször futtatja a teszteseteket különböző értékek használatával. A tesztszkriptek paraméterezésével elért koncepciót adatvezérelt tesztelésnek nevezik.
Ebben a bemutatóban megismerheti-
- A paraméterezés típusa a TestNG-ben-
- Paraméterek annotáció a Testnggel.xml
- Hibaelhárítás
- Paraméterek a Dataprovider használatával
- A DataProvider meghívása különböző osztályokból
- A paraméterek típusai a Dataproviderben
A paraméterezés típusa a TestNG-
A paraméterezés egyértelműbbé tétele, végigmegyünk a paraméterezési lehetőségeken a Selenium Webdriver egyik legnépszerűbb keretrendszerében – a TestNG-ben.
A Paraméterek annotáció és a TestNG XML fájl segítségével.
-
.
Paraméterek a Testng.xml-ből lehet suite vagy teszt szintű
Paraméter a DataProvider-ből vehet Method és ITestContext paramétert.
Tanulmányozzuk őket részletesen –
Parameters Annotation in TestNG
Parameters Annotation in TestNG egy olyan módszer, amellyel értékeket adhatunk át a tesztmódszereknek argumentumként az .xml fájl segítségével. A felhasználóknak a futtatás során szükségük lehet az értékek átadására a tesztmódszereknek. A @Parameters annotációs módszer bármelyik @Test, @Before, @After vagy @Factory annotációval rendelkező metódusban használható.
Parameters annotation with Testng.xml
Válassza a paraméterezést annotációk segítségével, ha nem akarja kezelni a komplexitást & a bemeneti kombinációk száma kevesebb.
Lássuk, hogyan működik ez
Tesztforgatókönyv
1. lépés) Indítsuk el a böngészőt & menjünk a Google.com
Szint 2) Adjunk meg egy keresési kulcsszót
Szint 3) Ellenőrizzük, hogy a beírt érték megegyezik-e a tesztadataink által megadott értékkel
Szint 4) Ismételjük meg a 2 & 3-at, amíg minden értéket be nem adunk
Teszt szerző | Keresőkulcs |
Guru99 | India |
Krishna | USA |
Bhupesh | Kína |
Itt egy példa arra, hogy hogyan kell csinálni paraméterek nélkül
Egy tanulmány, a fenti példát. Képzeljük el, milyen összetett lesz a kód, ha ezt 3 bemeneti kombinációra csináljuk
Most, paraméterezzük ezt a TestNG segítségével
Ezért, szükségünk lesz
- El kell készítenünk egy XML fájlt, amely a paramétereket fogja tárolni
-
A tesztben adjunk hozzá @Parameters
Itt a teljes kód
Teszt szint TestNG.xml
ParameterWithTestNGXML.java fájl
Instrukciók a szkript futtatásához, válassza ki az XML fájlt és futtassa a Test NG Suite
Jobb klikk a .xml fájlt -> Run as -> Testng Suite (Megjegyzés: Suite)
Most, a paraméterek 2 szinten határozhatók meg
- Suite szint – A TestNG XML fájl <suite> tagjén belüli paraméterek suite szintű paraméterek lesznek.
- Teszt szint — A tesztelés XML fájl <Test> tagjén belüli paraméterek lesznek a teszt szint paraméterei.
Itt ugyanaz a teszt a suite szintű paraméterekkel
MEGJEGYZÉS: Ha a paraméter neve megegyezik a suite szinten és a teszt szinten, akkor a teszt szintű paraméterek előnyben részesülnek a suite szinttel szemben. Tehát ebben az esetben a teszt szinten belüli összes osztály megosztja a felülbírált paramétert, és a többi osztály, amelyik a teszt szinten kívül van, megosztja a lakosztály szintű paramétert.
Hibaelhárítás
Issue # 1 A paraméter értéke a testng.xml-ben nem tipizálható a megfelelő teszt metódus paraméterére, hibát fog dobni.
Nézzük a következő példát
Itt az ‘author’ attribútum ‘Guru99’-nek felel meg, ami egy karakterlánc, a megfelelő tesztmódszer pedig egész értéket vár, ezért itt kivételt kapunk.
2. probléma A @Paramétereidnek nincs megfelelő értékük a testing.xml-ben.
Ezt a helyzetet úgy tudja megoldani, hogy a tesztmódszer megfelelő paraméteréhez hozzáadja a @optional megjegyzést.
3. probléma: Ugyanannak a paraméternek több értékét szeretné tesztelni a Testng.xml segítségével
Az egyszerű válasz az, hogy ez nem lehetséges! Lehet több különböző paramétere, de minden paraméter csak egyetlen értéket vehet fel. Ez segít megelőzni az értékek kemény kódolását a szkriptben. Ezáltal a kód újrafelhasználhatóvá válik. Gondolj rá úgy, mint a szkripted konfigurációs fájljaira. Ha több értéket szeretne használni egy paraméterhez, használja a DataProviders
Data Provider in TestNG
A Data Provider in TestNG egy olyan módszer, amelyet akkor használnak, ha a felhasználónak összetett paramétereket kell átadni. Az összetett paramétereket Javából kell létrehozni, például összetett objektumokat, tulajdonságfájlokból vagy adatbázisból származó objektumokat lehet átadni az adatszolgáltató metódussal. A metódus @DataProvider annotációval van ellátva, és egy objektumokból álló tömböt ad vissza.
A Dataprovider
@Parameters annotáció használata egyszerű, de több adathalmazzal való teszteléshez Data Provider-t kell használnunk.
Tesztelési keretrendszerünkkel több ezer webes űrlap kitöltéséhez más módszertanra van szükségünk, amely egyetlen végrehajtási folyamattal nagyon nagy adathalmazt tud adni.
Ezt az adatvezérelt koncepciót a @DataProvider annotációval érjük el a TestNG-ben.
Ez csak egy attribútummal rendelkezik ‘name’. Ha nem adja meg a name attribútumot, akkor a DataProvider neve megegyezik a megfelelő metódus nevével.
Az adatszolgáltató egy kétdimenziós JAVA-objektumot küld vissza a tesztmódszerhez, és a tesztmódszer, M-szer fogja meghívni egy M*N típusú objektumtömböt. Például, ha a DataProvider egy 2*3 objektumból álló tömböt ad vissza, akkor a megfelelő tesztmódszer 2-szer lesz meghívva 3 paraméterrel minden alkalommal.
Teljes példa
DataProvider meghívása más osztályból
A DataProvider alapértelmezés szerint ugyanabban az osztályban található, ahol a tesztmódszer vagy annak alaposztálya. Ahhoz, hogy más osztályba helyezzük, statikussá kell tennünk az adatszolgáltató metódust, és a teszt metódusban hozzá kell adnunk egy dataProviderClass attribútumot a @Test annotációban.
Kódpélda
TestClass ParameterDataproviderWithClassLevel.java
DataproviderClass.java
A paraméterek típusai az adatszolgáltatóban
A DataProvider módszer kétféle paramétert támogat.
Módszer- Ha ugyanannak a DataProvidernek különbözőképpen kell viselkednie különböző tesztmódszerrel , használja a Method paramétert.
A következő példában ,
- Vizsgáljuk, hogy a módszer neve testMethodA.
- Ha igen, akkor egy értékkészletet adunk vissza
- Emás esetben egy másik értékkészletet adunk vissza
Itt a kimenet
ITestContext- A tesztesetek különböző paramétereinek létrehozására használható csoportok alapján.
A valós életben az ITestContext segítségével a paraméterek értékeit a tesztmódszerek, hosztok, a teszt konfigurációi alapján változtathatjuk.
A következő kódpéldában
- Van 2 csoportunk A & B
- Minden tesztmódszer egy csoporthoz van rendelve
- Ha a csoport értéke A, egy adott adatkészletet kapunk vissza
- Ha a csoport értéke B, egy másik adatkészletet kapunk vissza
Megjegyzés: Ha közvetlenül futtatja a testng osztályt, akkor először meghívja az adatszolgáltatót, amely nem kaphat csoportinformációt, mivel a csoportok nem állnak rendelkezésre. De ehelyett, ha ezt az osztályt a testng.xml-en keresztül hívja meg, akkor az ITestContext segítségével elérhető lesz a csoportinformáció. Használja a következő XML-t a teszt hívásához
Summary:
- A paraméterezés szükséges az adatvezérelt tesztelés létrehozásához.
- A TestNG kétféle paraméterezést támogat, a @Parameter+TestNG.xml és a@DataProvider használatával
-
A @Parameter+TestNG.xml-ben paramétereket lehet elhelyezni suite és teszt szinten. Ha
Az azonos paraméternév mindkét helyen deklarálva van; a teszt szintű paraméter előnyben részesül a suit szintű paraméterrel szemben.
- A @Parameter+TestNG.xml használatával egyszerre csak egy értéket lehet megadni, de a @DataProvider egy objektum 2d tömbjét adja vissza.
- Ha a DataProvider más osztályban van jelen, mint az az osztály, ahol a tesztmódszer található, a DataProvidernek statikus módszernek kell lennie.
- A DataProvider által támogatott két paraméter a Method és az ITestContext.