Testovanie riadené údajmi pomocou TestNG a Selenium

V tomto texte sa budeme venovať testovaniu založenému na údajoch (data driven testing). Budeme sa odvolávať na anotáciu @DataProvider v TestNG, pomocou ktorej môžeme testovacím metódam odovzdávať údaje a vytvoriť rámec testovania riadeného údajmi.
Obsah
Čo je testovanie riadené údajmi?
Testovanie riadené údajmi je technika automatizácie testovania, pri ktorej sú testovacie údaje a testovacia logika oddelené. Testovacie údaje riadia testovanie tým, že sa iteratívne načítavajú do testovacieho skriptu. Preto namiesto pevne zakódovaných vstupných údajov máme nové údaje zakaždým, keď skript načíta údaje z testovacieho zdroja údajov.
Testovanie riadené údajmi pomocou @DataProvider
Testovanie riadené údajmi možno vykonávať prostredníctvom TestNG pomocou jeho anotácie @DataProvider. Metóda s anotáciou @DataProvider nad sebou vracia 2D pole objektu, kde riadky určujú počet iterácií a stĺpce určujú počet vstupných parametrov odovzdaných metóde Test s každou iteráciou.
Táto anotácia preberá ako parameter iba názov poskytovateľa údajov, ktorý sa používa na prepojenie poskytovateľa údajov s metódou Test. Ak nie je uvedený žiadny názov, ako názov poskytovateľa údajov sa prevezme názov metódy poskytovateľa údajov.
@DataProvider(name = „nameOfDataProvider“)
public Object[][] dataProviderMethodName() {
//Data generation or fetching logic from any external source
//returning 2d array of object
return new Object[][] {{„k1″,“r1“,1},{„k2″,“r2“,2}};
}
Po vytvorení metódy poskytovateľa údajov môžeme priradiť metódu Test k poskytovateľovi údajov pomocou atribútu ‚dataProvider‘ anotácie @Test. Na úspešné prepojenie poskytovateľa údajov s metódou Test sa musí počet a dátový typ parametrov metódy Test zhodovať s parametrami vrátenými metódou poskytovateľa údajov.
@Test(dataProvider = „nameOfDataProvider“)
public void sampleTest(String testData1, String testData2, int testData3) {
System.out.println(testData1 + “ “ + testData2 + “ “ + testData3);
}
Úryvok kódu pre testovanie riadené údajmi v TestNG
@DataProvider(name = „dataProvider1“)
public Object[][] dataProviderMethod1() {
return new Object[][] {{„k1″,“r1“},{„k2″,“r2“},{„k3″,“r3“}};
}
//The test case will run 3 times with different set of values
@Test(dataProvider = „dataProvider1“)
public void sampleTest(String str1, String str2) {
System.out.println(str1 + “ “ + str2);
}
Vyššie uvedený test „sampleTest“ sa spustí 3-krát s rôznymi sadami testovacích údajov – {„k1“, „r1“},{„k2“, „r2“},{„k3“, „r3“} prijatých z metódy dataProvider1′ dataProvider.