Ryhmät sisään TestNG
⚡ Älykäs yhteenveto
Ryhmät sisään TestNG voit merkitä testimetodeille loogisia otsikoita ja sitten sisällyttää tai sulkea pois ne XML-paketin avulla. Tämä lähestymistapa yksinkertaistaa savu-, regressio- ja riippuvuuspohjaisia ajoja ilman uudelleenkirjoittamista Java koodi.
TestNG on testauskehys, joka kattaa yksikkö-, toiminnalliset, kokonaisvaltaiset, käyttöliittymä- ja integraatiotestit Java hankkeisiin.
Voit ajaa yhtä pakettia tai useita paketteja (paketti kapseloi toisiinsa liittyvät luokat määriteltyyn hakemistoasetteluun) luomalla XML-paketin ja käynnistämällä sen Mavenin kautta.
TestNG Ryhmät esimerkin kanssa
Käytät ryhmiä TestNG kun:
- Et halua hajauttaa testausmenetelmiä useisiin luokkiin pelkästään toiminnallisen alueen perusteella, ja
- Haluat ohittaa (ei suorittaa) valittuja testitapauksia ikään kuin ne puuttuisivat koodikannasta.
- Molempien tavoitteiden saavuttamiseksi merkitset metodit loogisiin ryhmiin. TestNG noudattaa sitten XML-paketissa määritettyjä ”sisällytä”- ja ”poissulje”-suodattimia.
Alla oleva koodinpätkä näyttää testimetodissa käytetyn ryhmätunnisteiden syntaksin.
Tässä käytetään kahta ryhmän nimeä, nimittäin bonding ja strong_tiesNämä ovat loogisia otsikoita, jotka voit nimetä uudelleen projektisi mukaan.
<groups> tagi merkitsee ryhmäsuodattimien alkua XML-paketissa.
Sitten mukautat XML:ää valitaksesi valitun ryhmän tagatuista luokista. Alla oleva esimerkki näyttää ryhmän määrittelyn syntaksin.
<ajaa>
<sisältää nimi="sidonta" />
</ajaa>
</ryhmät>
Oletetaan, että yksi luokka sisältää 10 testimetodia.
Näistä menetelmistä:
- 6 menetelmää kantaa
bondingryhmä, ja - 4 menetelmää kantaa
strong_tiesryhmään.
Seuraavaksi asennat Mavenin ja Java polkuja ja käytä Eclipse IDE ryhmän käytön havainnollistamiseksi XML-tiedostojen avulla ryhmässä Java-pohjainen Maven-projekti.
Luo XML:lle TestNG Tagien kanssa
- Maven-kehyksen XML-tiedosto (Extensible Markup Language) tallentaa yhden tai useamman testin kokoonpanon, joka on deklaroitu tunnisteita.
- Jokainen testimerkintä on kääritty tunniste ja siihen voi kuulua yksi tai useampi TestNG luokat.
- A Java luokka, jossa on yksi tai useampi @Testata sen metodien merkintöjä käsitellään kuin TestNG luokka.
Useita tageja esiintyy peräkkäin toimivan testng.xml-tiedoston muodostamiseksi, nimittäin , ja .
- tagi sisältää pakettitason nimen, jota käytetään TestNG raportteja toteutuksen yhteenvetoja varten.
- <test name=”Guru 99 Savutestin demo tagissa on looginen testin nimi; raportti käyttää sitä läpäisy-, hylkäämis- ja ohitusmääriin sekä kokonaissuoritusaikaan ja ryhmän metatietoihin.
- tag osoittaa testiluokkaan, jossa
com.group.guru99on paketti jaTC_Class1on luokan nimi.
<!DOCTYPE sviitti SYSTEM “http://testng.org/testng-1.0.dtd”>
<sviitti nimi="Sviitti">
<testi nimi="Guru 99 Savutestin demo>
<ryhmät>
<ajaa>
<sisältää nimi=”vahvat_siteet” />
</ajaa>
</ryhmät>
<luokat>
<luokka nimi=”com.group.guru99.TC_Luokka1” />
</luokat>
</testi>
</sviitti>
Tähän XML-kokoonpanoon viitataan seuraavien osioiden video-ohjeissa.
"sulkea pois" tai "sisällytä" testi-XML:ssä
Jos ryhmittelymekanismi tuntuu raskaalta pienelle suodattimelle, testng.xml-paketti mahdollistaa myös yksittäisten testimetodien poissulkemisen tai sisällyttämisen nimen perusteella.
Sisällytä tunnisteSisällytä-tagin syntaksisisältää nimi=”${TESTITAPAUKSEN_NIMI}” />
Huomautus: Voit sisällyttää tai sulkea pois useita testitapauksia yhdellä suorituskerralla, ja sama syntaksi koskee ryhmäsuodattimia.
dependsOnGroupsin käyttö järjestettyyn suoritukseen
Pelkän sisällyttämisen lisäksi TestNG antaa yhden ryhmän olla riippuvainen toisesta käyttämällä dependsOnGroups attribuutti. Suorittaja varmistaa, että jokainen pääryhmän metodi päättyy ennen kuin mikään riippuvainen metodi käynnistyy, mikä pitää esiehdot luotettavina.
- Kirjaudu ensin sisään ja sitten tapahtumat: Tagien kirjautumismenetelmät
group = "auth"ja tunnisteiden siirtotestejädependsOnGroups = {"auth"}Siirtotestit suoritetaan vasta onnistuneen kirjautumisen jälkeen. - Ohita epäonnistumisen yhteydessä: Jos pääryhmän metodi epäonnistuu, TestNG merkitsee riippuvaiset metodit ohitetuiksi sen sijaan, että ne merkitsisivät suoraan hylkäykseksi, mikä pitää raportit rehellisinä.
- Yhdistä alwaysRun-funktion kanssa: Siivousmenetelmien tulisi olla asetettu
alwaysRun = truejoten purku jatkuu, vaikka ylävirran ryhmä epäonnistuisi.
Tämä malli on yleinen kokonaisvaltaisissa ratkaisuissa, joissa API-asennus on suoritettava loppuun ennen käyttöliittymän vahvistusten käynnistymistä.
ajaa TestNG Ryhmittele, sisällytä, sulje pois koodi (videodemo)
Alla on läpikäynti aiheesta Java koodi ja XML-paketti, jotka ohjaavat ryhmittele, sulje pois ja sisällytä käyttäytymistä.
Testi skenaario: Käynnistä Guru99 demopankkisivustoa, tarkista muutama elementti kirjautumissivulla, anna tunnistetiedot ja tarkista muutama kohde uudelleen kojelaudassa kirjautumisen jälkeen.
Huomautus: Jokainen vaihe elää omassa metodissaan, mutta suorituksen aikana järjestys riippuu XML-paketin merkinnöistä.
- Menetelmä 1: Käynnistä selain ja alusta se URL (
tc01LaunchURL()). - Menetelmä 2: Tarkista kirjautumissivun otsikko (
tc02VerifyLaunchPage()). - Menetelmä 3: Kirjoita käyttäjätunnus ja salasana kirjautumislomakkeelle (
tc03EnterCredentials()). - Menetelmä 4: Varmista, että pääkäyttäjän tunnus näkyy käyttäjän kojelaudassa (
tc04VerifyLoggedInPage()). - Menetelmä 5: Tarkista lisälinkit käyttäjän kojelaudassa (
tc05VerifyHyperlinks()).
Code skenaariolle:
tuoda java.util.concurrent.TimeUnit;
tuoda org.openqa.selenium.By;
tuoda org.openqa.selenium.WebDriver;
tuoda org.openqa.selenium.firefox.FirefoxKuljettaja;
tuoda org.testing.Assert;
tuoda org.testng.annotations.Test;
julkinen luokka TC_Luokka1 {
julkinen staattinen lopullinen web-ajuri webDriver = uusi Firefoxkuljettaja();
jono käynnistyssivunOtsikko = "//h3[teksti()='Guru99 Pankki]”;
lopullinen jono käyttäjänimi_elementti = “//syöttö[@nimi='uid']”, salasanan_elementti = “//syöte[@nimi='salasana']”,
sisäänkirjautumiselementti = “//input[@nimi='btnLogin']”;
lopullinen jono käyttäjänimi_arvo = ”Mngr28642”, salasanan_arvo = ”ydAnate”;
lopullinen jono päällikön tunnus = “//td[sisältää(text();'Pääkäyttäjän tunnus')]”;
lopullinen jono uusiAsiakas = “//a[@href='addcustomerpage.php']”, rahastonsiirto = “//a[@href='FundTransInput.php']”;
/** Tämä testitapaus alustaa webDriverin */
@Testata(ryhmät = { "sidonta", ”vahvat_siteet” })
julkinen tyhjiö tc01LaunchURL() {
webDriver.manage().window().maximize();
webDriver.manage().timeouts().implicitlyWait(20, AikaYksikkö.SEKUNNIT);
webDriver.get("https://www.demo.guru99.com/V4/");
}
/** Tarkistaa otsikon olemassaolon kirjautumissivulla */
@Testata(ryhmät = { "sidonta" })
julkinen tyhjiö tc02VerifyLaunchPage() {
Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(),
"Etusivun otsikkoa ei näytetä");
System.out.println("Etusivun otsikko näkyy");
}
/** Syöttää käyttäjätunnuksen ja salasanan ja napsauttaa sitten Kirjaudu sisään */
@Testata(ryhmät = { "sidonta", ”vahvat_siteet” })
julkinen tyhjiö tc03Syötä tunnistetiedot() {
webDriver.findElement(By.xpath(käyttäjäNimi_elementti)).sendKeys(käyttäjäNimi_arvo);
webDriver.findElement(By.xpath(salasanan_elementti)).sendKeys(salasanan_arvo);
webDriver.findElement(By.xpath(kirjautumiselementti)).click();
}
/** Vahvistaa päällikön tunnuksen kojelaudassa */
@Testata(ryhmät = { ”vahvat_siteet” })
julkinen tyhjiö tc04VahvistaKirjautunutSivu() {
Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(),
"Päällikön tunnustarraa ei näytetä");
System.out.println("Päällikön tunnus -tunniste näytetään");
}
/** Tarkistaa Uusi asiakas -linkin ja Rahansiirto-linkin kojelaudassa */
@Testata(ryhmät = { "sidonta" })
julkinen tyhjiö tc05VerifyHyperlinkit() {
Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(),
”Uuden asiakkaan hyperlinkkiä ei näytetä”);
System.out.println("Uuden asiakkaan hyperlinkki näytetään");
Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(),
"Varainsiirron hyperlinkkiä ei näytetä");
System.out.println("Varainsiirron hyperlinkki näytetään");
}
}
Huomaa: demopankkitunnukset ovat voimassa noin 20 päivää, joten paikallinen suoritus saattaa näyttää virheellisten tunnistetietojen virheen kyseisen ajanjakson umpeutumisen jälkeen.
Koodin selitys:
Viisi testausmenetelmää, yksi toimintoa kohden, kullakin on groups attribuutti @Test merkintä.
Kaksi loogista ryhmätunnistetta ovat strong_ties ja bonding.
- Ensimmäinen ja kolmas menetelmä sisältävät molemmat
bondingjastrong_ties, joten ne suoritetaan aina, kun jompikumpi ryhmä sisältyy pakettiin. Tämä on yleinen kaava jaetuille testitapaus askeleet. - Toinen menetelmä on merkitty vain tägeillä
bonding, joten se toimii vain silloin, kunbondingryhmä on mukana. - Neljäs menetelmä on merkitty vain tägeillä
strong_ties, joten se toimii vain, kun kyseinen ryhmä on mukana. - Viides menetelmä on merkitty vain tägeillä
bonding, joten se toimii vain silloin, kunbondingryhmä on mukana.
Seuraavassa on neljä toteutusskenaariota:
Skenaario 1: Suorita jokainen testimenetelmä ryhmästä riippumatta. Poista <groups> lohko käynnissä olevasta XML:stä.
Skenaario 2: Suorita vain valittuun ryhmään sidottuja metodeja, nimittäin strong_ties or bondingKatso alla oleva video.
- Videon ensimmäisessä osassa mm.
<groups>lohko kommentoidaan pois, joten jokainen testimetodi suoritetaan. - Toisessa osassa ryhmäsuodatin palautetaan ja vain vastaavat metodit suoritetaan.
Skenaario 3: Käytä poissulkemissuodatinta ohittaaksesi valitut testitapaukset. Katso video.
- Demo ei sisällä
tc02nimeltä suoritettavassa XML-tiedostossa, ja tulosraportti vahvistaa, että poissuljettua metodia ei suoriteta.
Skenaario 4: Käytä sisällytyssuodatinta vain suoritukseen tc01LaunchURL, tc03EnterCredentialsja tc05VerifyHyperlinksKatso video.
Tässä suorituksessa vain include-suodattimessa luetellut metodit suoritetaan täsmälleen määritetyllä tavalla.
Lataa esimerkkiprojekti alla olevasta linkistä.
Yhteenveto
Ryhmät sisään TestNG tuoda rakennelman suureksi Selenium ja yksikköpaketteja korvaamalla kertaluonteiset luokkajaot deklaratiivisilla XML-suodattimilla.
Merkitse metodisi tunnisteella @Test(groups = {...}), käytä sitten <include>, <exclude>ja dependsOnGroups ajaa savua, regressiota ja kokonaisvaltaisia suorituksia samasta Maven-projektista TestNG 7.x.


