Dataprovider & TestNG XML:
Kun luomme ohjelmistoja, toivomme aina, että ne toimisivat eri tavalla erilaisilla tiedoilla. Kun on kyse saman ohjelmiston testaamisesta, emme voi olla epäreiluja testatessamme sitä vain yhdellä datajoukolla. Tässäkin tapauksessa meidän on varmistettava, että järjestelmämme ottaa vastaan kaikki yhdistelmäjoukot, joita sen odotetaan tukevan. Tätä varten meidän on parametrisoitava testiseptimme. Tässä tulee parametrointi kuvaan.
Parametrisointi Seleniumissa
Parametrisointi Seleniumissa on prosessi, jolla testiskriptit parametrisoidaan, jotta sovellukselle voidaan välittää useita tietoja ajon aikana. Se on suoritusstrategia, joka ajaa testitapaukset automaattisesti useita kertoja käyttäen eri arvoja. Testiskriptien parametrisoinnilla saavutettua käsitettä kutsutaan nimellä Data Driven Testing.
Tässä opetusohjelmassa opit-
- Parametrisoinnin tyyppi TestNG:ssä-
- Parametrien annotaatio Testngillä.xml
- Vianmääritys
- Parametrit Dataproviderin avulla
- Kutsu DataProvideria eri luokasta
- Parametrien tyypit Dataproviderissa
Parametrisoinnin tyyppi TestNG:ssä-
Tehdä parametrisoinnista selkeämpää, käymme läpi parametrisointivaihtoehdot yhdessä Selenium Webdriverin suosituimmassa kehyksessä – TestNG:ssä.
On kaksi tapaa, joilla voimme toteuttaa parametrisoinnin TestNG:ssä
-
Parametrit-annotaation ja TestNG:n XML-tiedoston avulla.
-
DataProvider-annotaation avulla.
Parametrit Testng.xml-tiedostosta voivat olla sviitti- tai testitasolla
Parametri DataProviderista voi ottaa parametriksi Methodin ja ITestContextin.
Tarkastellaan niitä tarkemmin –
Parameters Annotation in TestNG
Parameters Annotation in TestNG on menetelmä, jolla voidaan välittää arvoja testimenetelmille argumentteina .xml-tiedoston avulla. Käyttäjiä voidaan vaatia välittämään arvoja testimenetelmille ajon aikana. @Parameters-merkintämenetelmää voidaan käyttää missä tahansa metodissa, jolla on @Test-, @Before-, @After- tai @Factory-merkintä.
Parameters-annotaatio Testng.xml:llä
Valitse parametrisointi annotaatioiden avulla silloin, kun haluat käsitellä monimutkaisuutta & syöttökombinaatioiden määrä on pienempi.
Katsotaan miten tämä toimii
Testiskenaario
Vaihe 1) Käynnistä selain & mene Googleen.com
Vaihe 2) Syötä hakusana
Vaihe 3) Varmista, että syötetty arvo on sama kuin testiaineistomme antama arvo
Vaihe 4) Toista 2 & 3, kunnes kaikki arvot on syötetty
Testin tekijä | . SearchKey |
Guru99 | Intia |
Krishna | USA |
Bhupesh | Kiina |
Tässä on esimerkki siitä, miten se tehdään ILMAN parametreja
Tutkimus, yllä olevasta esimerkistä. Kuvittele, kuinka monimutkaiseksi koodi muuttuu, kun teemme tämän 3 tuloyhdistelmälle
Nyt parametrisoidaan tämä TestNG:n avulla
Tehdäksemme näin, sinun täytyy
- Luo XML-tiedosto, johon tallennetaan parametrit
-
Testiin lisätään annotaatio @Parameters
Tässä on koko koodi
Testitaso TestNG.xml
ParameterWithTestNGXML.java-tiedosto
Ohjeita skriptin suorittamiseen, valitse XML-tiedosto ja suorita Test NG Suite
Klikkaa hiiren oikealla .xml-tiedostoa -> Run as -> Testng Suite (Huom : Suite)
Parametreja voidaan nyt määritellä kahdella tasolla
- Suite-taso – TestNG XML-tiedoston <suite>-tagin sisällä olevat parametrit ovat Suite-tason parametreja.
- Testitaso — Testaus XML-tiedoston <Test>-tagin sisällä olevat parametrit ovat testitason parametreja.
Tässä on sama testi, jossa on sviittitason parametrit
HUOMAUTUS: Jos parametrin nimi on sama sviittitason ja testitason parametreissa, testitason parametri on sviittitason parametri edellä. Tällöin kaikki testitason sisällä olevat luokat jakavat ohitetun parametrin ja muut testitason ulkopuolella olevat luokat jakavat sviittitason parametrin.
Vianmääritys
Issue # 1 Parametrin arvoa testng.xml:ssä ei voida tyypittää vastaavaan testimetodin parametriin, se heittää virheilmoituksen.
Tarkastellaan seuraavaa esimerkkiä
Tässä ’author’-attribuutti on yhtä suuri kuin ’Guru99’, joka on merkkijono, ja vastaavassa testimenetelmässä odotetaan kokonaislukuarvoa, joten saamme poikkeuksen.
Vika # 2 @Parametreillesi ei ole vastaavaa arvoa testing.xml:ssä.
Voit ratkaista tämän tilanteen lisäämällä @optional-merkinnän testimenetelmän vastaavaan parametriin.
Kysymys # 3: Haluat testata useita saman parametrin arvoja Testng.xml:n avulla
Yksinkertainen vastaus on, että tätä ei voi tehdä! Sinulla voi olla useita eri parametreja, mutta jokaisella parametrilla voi olla vain yksi arvo. Tämä auttaa estämään arvojen kovakoodaamisen skriptiin. Tämä tekee koodista uudelleenkäytettävää. Ajattele sitä skriptisi config-tiedostoina. Jos haluat käyttää useita arvoja parametrille, käytä DataProviders
Data Provider in TestNG
Data Provider in TestNG on menetelmä, jota käytetään, kun käyttäjän täytyy välittää monimutkaisia parametreja. Monimutkaiset parametrit on luotava Javasta, kuten monimutkaisia objekteja, objekteja ominaisuustiedostoista tai tietokannasta voidaan välittää data provider-metodilla. Metodi on annotoitu @DataProviderilla ja se palauttaa joukko objekteja.
Parametrit Dataproviderin avulla
@Parameters-annotaatio on helppo, mutta jos haluamme testata useilla datajoukoilla, meidän on käytettävä Data Provideria.
Täyttääksemme tuhansia web-lomakkeita testauskehyksellämme tarvitsemme erilaisen metodologian, joka voi antaa meille hyvin suuren tietokokonaisuuden yhdessä suoritusvirrassa.
Tämä datalähtöinen konsepti saavutetaan @DataProvider-annotaatiolla TestNG:ssä.
Se sisältää vain yhden attribuutin ’name’. Jos name-attribuuttia ei määritetä, DataProviderin nimi on sama kuin vastaavan metodin nimi.
DataProvider palauttaa kaksiulotteisen JAVA-olion testimetodille ja testimetodi, kutsuu M kertaa M*N-tyyppistä oliomäärää. Esimerkiksi jos DataProvider palauttaa 2*3 objektin muodostaman matriisin, vastaavaa testimenetelmää kutsutaan 2 kertaa kolmella parametrilla jokaisella kerralla.
Täydellinen esimerkki
DataProviderin kutsuminen eri luokasta
Oletusarvoisesti DataProvider sijaitsee samassa luokassa, jossa testimenetelmä on, tai sen perusluokassa. Jos haluamme sijoittaa sen johonkin muuhun luokkaan, meidän on tehtävä DataProvider-metodista staattinen ja testimetodiin on lisättävä attribuutti dataProviderClass @Test-annotaatiossa.
Koodiesimerkki
Testiluokka ParameterDataproviderWithClassLevel.java
DataproviderClass.java
Dataprovider-menetelmän parametrityypit
Tietopalvelun DataProvider-menetelmällä tuetaan kahta parametrityyppiä.
Method- Jos SAMAN DataProviderin tulee käyttäytyä eri tavalla eri testimenetelmillä , käytä Method-parametria.
Seuraavassa esimerkissä ,
- Tarkistetaan, onko metodin nimi testMethodA.
- Jos kyllä palautetaan yksi arvosarja
- Ellei palauteta toista arvosarjaa
Tässä on tuloste
ITestContext- Sen avulla voidaan luoda erilaisia parametreja testitapauksille ryhmien perusteella.
Todellisessa elämässä voit käyttää ITestContextia muuttamaan parametrien arvoja testimenetelmien, isäntien ja testin konfiguraatioiden perusteella.
Seuraavassa koodiesimerkissä
- Meillä on 2 ryhmää A & B
- Jokainen testimenetelmä on määritetty ryhmään
- Jos ryhmän arvo on A, palautetaan tietty tietokokonaisuus
- Jos ryhmän arvo on B, palautetaan toinen tietokokonaisuus
Huom: Jos suoritat suoraan testng-luokan, se kutsuu ensin dataprovideria, joka ei voi saada tietoja ryhmistä, koska ryhmiä ei ole saatavilla. Mutta jos sen sijaan kutsut tätä luokkaa testng.xml:n kautta, se saa ryhmätiedot ITestContextin avulla. Käytä seuraavaa XML:ää testin kutsumiseen
Summary:
- Parametrisointi vaaditaan Data Driven Testingin luomiseen.
- TestNG tukee kahdenlaista parametrisointia, käyttämällä @Parameter+TestNG.xml ja käyttämällä@DataProvideria
-
In @Parameter+TestNG.xml parametreja voidaan sijoittaa sviitti- ja testitasolle. Jos
Sama parametrin nimi on ilmoitettu molemmissa paikoissa; testitason parametri saa etusijan pukutason parametriin nähden.
- käyttämällä @Parameter+TestNG.xml voidaan asettaa vain yksi arvo kerrallaan, mutta @DataProvider palauttaa 2d array of Object.
- Jos DataProvider on eri luokassa kuin luokka, jossa testimenetelmä sijaitsee,DataProviderin tulee olla staattinen metodi.
- DataProviderin tukemia parametreja on kaksi: Metodi (Metod) ja ITestContext.