Dataprovider & TestNG XML:

kesä 9, 2021
admin

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ä

  1. Parametrit-annotaation ja TestNG:n XML-tiedoston avulla.

  2. 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

  1. Suite-taso – TestNG XML-tiedoston <suite>-tagin sisällä olevat parametrit ovat Suite-tason parametreja.
  2. 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.

Vastaa

Sähköpostiosoitettasi ei julkaista.