TestNG oppitunti

Mikä on TestNG?

TestNG on automaation testauskehys, jossa NG tarkoittaa "seuraavaa sukupolvea". TestNG on inspiroinut JUnit joka käyttää huomautuksia (@). TestNG voittaa haitat JUnit ja on suunniteltu tekemään end-to-end-testaus helppoa.

Käyttäminen TestNG, voit luoda oikean raportin ja saada helposti selville, kuinka monta testitapausta on hyväksytty, epäonnistunut ja ohitettu. Voit suorittaa epäonnistuneet testitapaukset erikseen.

Esimerkiksi:

  • Oletetaan, että sinulla on viisi testitapausta, jokaiselle testitapaukselle kirjoitetaan yksi menetelmä (oletetaan, että ohjelma on kirjoitettu päämenetelmällä ilman testNG:tä). Kun suoritat tämän ohjelman ensin, kolme menetelmää suoritetaan onnistuneesti ja neljäs menetelmä epäonnistuu. Korjaa sitten neljännen menetelmän virheet, nyt haluat suorittaa vain neljännen menetelmän, koska kolme ensimmäistä menetelmää suoritetaan joka tapauksessa onnistuneesti. Tämä ei ole mahdollista ilman käyttöä TestNG.
  • - TestNG in Selenium tarjoaa vaihtoehdon, eli testng-failed.xml-tiedoston test-output-kansiossa. Jos haluat suorittaa vain epäonnistuneita testitapauksia, suoritat tämän XML-tiedoston. Se suorittaa vain epäonnistuneet testitapaukset.

Yllä olevan käsitteen lisäksi opit lisää TestNG, kuten mitkä ovat edut TestNG, kuinka luodaan testimenetelmiä @test-merkintöjen avulla, miten nämä luokat muunnetaan testaustiedostoiksi ja suoritetaan eclipse-toiminnon kautta sekä komentoriviltä.

Miksi käyttää TestNG with Selenium?

oletusarvo Selenium testit eivät luo oikeaa muotoa testituloksille. Käyttämällä TestNG in Selenium, voimme tuottaa testituloksia.

bridge Selenium käyttäjät käyttävät tätä enemmän kuin Junit etujensa vuoksi. On niin monia ominaisuuksia TestNG, mutta keskitymme vain tärkeimpiin, joita voimme käyttää Selenium. Seuraavassa on tärkeimmät ominaisuudet Selenium TestNG:

  • Luo raportti oikeassa muodossa, mukaan lukien testitapausten määrä, läpäistyjen testitapausten määrä, epäonnistuneiden testitapausten määrä ja ohitettujen testitapausten määrä.
  • Useita testitapauksia voidaan ryhmitellä helpommin muuntamalla ne testng.xml-tiedostoksi. Jossa voit asettaa prioriteetit, mikä testitapaus tulee suorittaa ensin.
  • Sama testitapaus voidaan suorittaa useita kertoja ilman silmukoita vain käyttämällä avainsanaa nimeltä "kutsujen määrä".
  • Testng:n avulla voit suorittaa useita testitapauksia useilla selaimilla, eli ristiin selaimen testaus.
  • - TestNG puitteet voidaan helposti integroida työkaluihin, kuten TestNG Maven, Jenkins jne.
  • Testauksessa käytetyt merkinnät ovat erittäin helposti ymmärrettäviä esim. @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriverilla ei ole alkuperäistä mekanismia raporttien luomiseen. TestNG voi luoda raportin luettavassa muodossa, kuten alla näytetään.
  • Käyttää TestNG with Selenium

  • TestNG yksinkertaistaa testien koodausta. Testeissämme ei enää tarvita staattista päämenetelmää. Toimintojen järjestystä säätelevät helposti ymmärrettävät huomautukset, jotka eivät vaadi menetelmien olevan staattisia.
  • Käyttää TestNG with Selenium

    Käyttää TestNG with Selenium

  • Käsittelemättömät poikkeukset käsitellään automaattisesti TestNG keskeyttämättä koetta ennenaikaisesti. Nämä poikkeukset raportoidaan epäonnistuneina vaiheina raportissa.

Edut TestNG yli JUnit

Niistä on kolme suurta etua TestNG yli JUnit:

  • Huomautuksia on helpompi ymmärtää
  • Testitapaukset voidaan ryhmitellä helpommin
  • Rinnakkainen testaus on mahdollista

Mitä annotaatio sisältää TestNG?

Huomautukset sisään TestNG ovat koodirivejä, jotka voivat ohjata, kuinka niiden alla oleva menetelmä suoritetaan. Niitä edeltää aina @-symboli. Todella varhainen ja nopea TestNG Esimerkki on alla esitetty.

Annotaatio sisään TestNG

Huomautuksia käsitellään myöhemmin osiossa "Käytetyt huomautukset TestNG”, joten on täysin ok, jos et ymmärrä yllä olevaa TestNG Esimerkki vielä. On vain tärkeää huomata toistaiseksi, että huomautukset ovat mukana TestNG on helpompi koodata ja ymmärtää kuin sisään JUnit.

Mahdollisuus suorittaa testejä rinnakkain on saatavilla TestNG mutta ei sisällä JUnit, Joten TestNG puitteet ovat parempia käyttäville testaajille Selenium Ruudukko.

Kuinka kirjoittaa testitapauksia TestNG?

Vaihe 1) Kirjoita liiketoimintalogiikkasi ja lisää se TestNG huomautuksia koodissasi.
Vaihe 2) Lisää lisätietoja, kuten luokan nimi, ryhmän nimi, paketin nimi jne
Vaihe 3) Suorita TestNG.

Luo testitapaus käyttämällä TestNG Merkinnät

Nyt opimme luomaan ensimmäisen testitapauksen käyttämällä TestNG Huomautukset sisään Selenium:

Ennen kuin luomme testitapauksen, meidän tulee ensin määrittää uusi TestNG Projekti sisään Eclipse ja nimeä se nimellä "EnsinTestNGProjekti”.

Uuden perustaminen TestNG projekti

Vaihe 1: Napsauta Tiedosto > Uusi > Java projekti

Uuden perustaminen TestNG projekti

Vaihe 2: Kirjoita "FirstTestNGProject" projektin nimeksi ja napsauta sitten Seuraava.

Uuden perustaminen TestNG projekti

Vaihe 3: Aloitamme nyt tuonnin TestNG Kirjastot mukaan projektiimme. Napsauta "Kirjastot" -välilehteä ja sitten "Lisää kirjasto..."

Uuden perustaminen TestNG projekti

Vaihe 4: Valitse Lisää kirjasto -valintaikkunassa "TestNG”Ja napsauta Seuraava.

Uuden perustaminen TestNG projekti

Vaihe 5: Napsauta Valmis.

Uuden perustaminen TestNG projekti

Sinun pitäisi huomata se TestNG on mukana kirjastojen luettelossa.

Uuden perustaminen TestNG projekti

Vaihe 6: Lisäämme nyt JAR-tiedostot, jotka sisältävät Selenium API. Nämä tiedostot löytyvät Java asiakasohjain, josta latasimme https://www.selenium.dev/downloads/ kun olimme asentamassa Selenium ja Eclipse edellisissä luvuissa.

Uuden perustaminen TestNG projekti

Siirry sitten kohtaan, johon olet sijoittanut Selenium JAR-tiedostoja.

Uuden perustaminen TestNG projekti

Kun olet lisännyt ulkoiset JAR:it, näytön pitäisi näyttää tältä.

Uuden perustaminen TestNG projekti

Vaihe 7: Napsauta Valmis ja varmista, että ensimmäinenTestNGProjekti näkyy Eclipse's Package Explorer -ikkuna.

Uuden perustaminen TestNG projekti

Kuinka luoda uusi TestNG Testitiedosto

Nyt kun olemme saaneet projektimme valmiiksi TestNG opetusohjelma, luokaamme uusi TestNG tiedosto.

Vaihe 1: Napsauta 'src' ja valitse muu.
Napsauta hiiren kakkospainikkeella "src"-pakettikansiota ja valitse Uusi > Muu…

Luoda uusi TestNG Testitiedosto

Vaihe 2: valita TestNG luokka.
Klikkaa TestNG kansio ja valitse "TestNG luokka” vaihtoehto. Napsauta Seuraava.

Luoda uusi TestNG Testitiedosto

Vaihe 3: Kirjoita arvot.
Kirjoita alla ilmoitetut arvot asianmukaisiin syöttöruutuihin ja napsauta Valmis. Huomaa, että olemme nimenneet meidän Java tiedosto nimellä "FirstTestNGTiedosto”.

Luoda uusi TestNG Testitiedosto

Vaihe 4: Malli luotu.
Eclipse pitäisi automaattisesti luoda malli meille TestNG alla näkyvä tiedosto.

Luoda uusi TestNG Testitiedosto

Ensimmäisen koodaus TestNG Esimerkki testitapauksesta

Luokaamme nyt ensimmäinen Testitapaus joka tarkistaa jos Mercury Toursin kotisivut ovat oikein. Kirjoita koodisi alla olevan kuvan mukaisesti TestNG Esimerkiksi:

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
       
      System.out.println("launching firefox browser"); 
      System.setProperty("webdriver.gecko.driver", driverPath);
      driver = new FirefoxDriver();
      driver.get(baseUrl);
      String expectedTitle = "Welcome: Mercury Tours";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
      driver.close();
  }
}

Huomaa seuraava.

  • TestNG ei vaadi main()-menetelmää.
  • Menetelmien ei tarvitse olla staattisia.
  • Käytimme @Test-merkintää. @Testiä käytetään kertomaan, että sen alla oleva menetelmä on testitapaus. Tässä tapauksessa olemme määrittäneet verifyHomepageTitle()-menetelmän testitapaukseksi, joten sijoitimme sen yläpuolelle @Test-merkinnän.
  • Koska käytämme merkintöjä TestNG, meidän piti tuoda paketti org.testng.annotations.*.
  • Käytimme Assert-luokkaa. Assert-luokkaa käytetään varmennustoimintojen suorittamiseen TestNG. Käyttääksemme sitä meidän on tuotava org.testng.Assert-paketti.

Sinulla voi olla useita testitapauksia (siis useita @Test-merkintöjä) yhdessä TestNG tiedosto. Tätä käsitellään tarkemmin myöhemmin osiossa "Käytetyt huomautukset TestNG"

Testin suorittaminen

Suorita testi suorittamalla tiedosto sisään Eclipse kuten yleensä. Eclipse tarjoaa kaksi lähtöä – yhden konsoli-ikkunassa ja toisen konsoli-ikkunassa TestNG Tulosikkuna.

Testin suorittaminen

Testin suorittaminen

Tarkistetaan luomia raportteja TestNG

Konsoli-ikkuna sisään Eclipse antaa tekstipohjaisen raportin testitapaustuloksistamme, kun taas TestNG Tulosikkuna antaa meille graafisen kuvan.

Raporttien tarkistaminen Luonut TestNG

HTML-raporttien luominen

TestNG on kyky luoda raportteja HTML-muodossa.

Vaihe 1: Ensimmäisen juoksun jälkeenTestNGTiedosto, jonka loimme edellisessä osiossa, napsauta hiiren kakkospainikkeella projektin nimeä (FirstTestNGProject) Project Explorer -ikkunassa ja napsauta sitten "Päivitä" -vaihtoehtoa.

HTML-raporttien luominen

Vaihe 2: Huomaa, että "test-output" -kansio luotiin. Laajenna se ja etsi index.html-tiedosto. Tämä HTML-tiedosto on raportti viimeisimmän testiajon tuloksista.

HTML-raporttien luominen

Vaihe 3: Double- Napsauta kyseistä index.html-tiedostoa avataksesi sen Eclipsesisäänrakennettu verkkoselain. Voit päivittää tämän sivun milloin tahansa testin suorittamisen jälkeen painamalla F5-näppäintä aivan kuten tavallisissa verkkoselaimissa.

HTML-raporttien luominen

Käytetyt huomautukset TestNG

Edellisessä osiossa olet tutustunut @Test-merkintään. Nyt tutkimme edistyneempiä merkintöjä ja niiden käyttöä.

Useita testitapauksia

Voimme käyttää useita @Test-merkintöjä yhdessä TestNG tiedosto. Oletusarvoisesti @Test-merkinnällä merkityt menetelmät suoritetaan aakkosjärjestyksessä. Katso alla oleva koodi. Vaikka menetelmät c_test, a_test ja b_test eivät ole järjestetty aakkosjärjestykseen koodissa, ne suoritetaan sellaisenaan.

Käytetyt huomautukset TestNG

Suorita tämä koodi ja napsauta luodulla index.html-sivulla "Kronologinen näkymä".

Käytetyt huomautukset TestNG

parametrit

Jos haluat, että menetelmät suoritetaan eri järjestyksessä, käytä parametria "priority". Parametrit ovat avainsanoja, jotka muokkaavat huomautuksen toimintoa.

  • Parametrit edellyttävät, että määrität niille arvon. Voit tehdä tämän asettamalla "=" niiden viereen ja sen jälkeen arvon.
  • Parametrit on suljettu suluissa, jotka sijoitetaan heti merkinnän jälkeen alla olevan koodinpätkän mukaisesti.

parametrit

TestNG suorittaa @Test-merkinnän alimmalla prioriteettiarvolla aina suurimpaan asti. Ensisijaisten arvojen ei tarvitse olla peräkkäisiä.

parametrit

- TestNG HTML-raportti vahvistaa, että menetelmät suoritettiin prioriteetin nousevan arvon perusteella.

parametrit

Useita parametreja

"Priority":n lisäksi @Testissä on toinen parametri nimeltä "alwaysRun", joka voidaan asettaa vain arvoon "true" tai "false". Jos haluat käyttää kahta tai useampaa parametria yhdessä huomautuksessa, erota ne pilkulla kuten alla näkyvä.

@Test(priority = 0, alwaysRun = true)

Useita parametreja

@BeforeTest ja @AfterTest

@BeforeTest tämän huomautuksen alla olevat menetelmät suoritetaan ennen ensimmäistä testitapausta TestNG tiedosto.
@AfterTest tämän huomautuksen alla olevat menetelmät suoritetaan kaikkien testitapausten jälkeen TestNG tiedostot suoritetaan.

Harkitse alla olevaa koodia.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
     @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Soveltamalla taulukon esittämää logiikkaa ja yllä olevaa koodia voimme ennustaa, että järjestys, jolla menetelmät suoritetaan, on:

  • 1st - launchBrowser()
  • 2nd – tarkistaKotisivun otsikko()
  • 3rd - terminateBrowser()

Annotaatiolohkojen sijoittelua voidaan vaihtaa keskenään vaikuttamatta kronologiseen järjestykseen, jossa ne suoritetaan. Ymmärretään a:lla TestNG Esimerkki ja yritä järjestää huomautuslohkot uudelleen siten, että koodisi näyttäisi samanlaiselta kuin alla oleva.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     @AfterTest                            //Jumbled
      public void terminateBrowser(){
          driver.close();
      }
     @BeforeTest                            //Jumbled
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test                                //Jumbled
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      
}

Suorita yllä oleva koodi ja huomaa se

Useita parametreja

@BeforeMethod ja @AfterMethod

@BeforeMethod tämän huomautuksen alla olevat menetelmät suoritetaan ennen jokaista menetelmää kussakin testitapauksessa.
@AfterMethod tämän huomautuksen alla olevat menetelmät suoritetaan jokaisen menetelmän jälkeen kussakin testitapauksessa.

In Mercury Tours, oletetaan, että haluamme tarkistaa kahden alla olevan linkin kohdesivujen otsikot.

Useita parametreja

Testimme kulku olisi seuraava:

  • Mene kotisivulle ja vahvista sen otsikko.
  • Napsauta REKISTERÖIDY ja vahvista kohdesivun otsikko.
  • Palaa etusivulle ja tarkista, onko sillä edelleen oikea otsikko.
  • Napsauta TUKI ja vahvista kohdesivun otsikko.
  • Palaa etusivulle ja tarkista, onko sillä edelleen oikea otsikko.

Alla oleva koodi havainnollistaa, kuinka @BeforeMethod ja @AfterMethod käytetään edellä mainitun skenaarion tehokkaaseen suorittamiseen.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
    public String baseUrl = "https://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver; 
    public String expected = null;
    public String actual = null;
        @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver= new FirefoxDriver();
          driver.get(baseUrl);
      }
      
      @BeforeMethod
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
      }
          @Test(priority = 0)
      public void register(){
          driver.findElement(By.linkText("REGISTER")).click() ;
          expected = "Register: Mercury Tours";
          actual = driver.getTitle();
          Assert.assertEquals(actual, expected);
      }
          @Test(priority = 1)
      public void support() {
            driver.findElement(By.linkText("SUPPORT")).click() ;
            expected = "Under Construction: Mercury Tours";
            actual = driver.getTitle();
            Assert.assertEquals(actual, expected);
      }
      @AfterMethod
      public void goBackToHomepage ( ) {
            driver.findElement(By.linkText("Home")).click() ;
      }
       
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Tämän testin suorittamisen jälkeen sinun TestNG pitäisi raportoida seuraavasta järjestyksestä.

Useita parametreja

Yksinkertaisesti sanottuna @BeforeMethodin tulisi sisältää menetelmiä, jotka sinun on suoritettava ennen jokainen testitapaus, kun taas @AfterMethodin tulisi sisältää menetelmiä, jotka sinun on suoritettava jälkeen jokainen testitapaus.

Yhteenveto TestNG Merkinnät

@BeforeSuite: Annotoitu menetelmä suoritetaan ennen kuin kaikki tämän sarjan testit on suoritettu.

@AfterSuite: Annotoitu menetelmä suoritetaan, kun kaikki tämän sarjan testit on suoritettu.

@BeforeTest: Annotoitu menetelmä ajetaan ennen kuin mitään testimenetelmää, joka kuuluu tunnisteen sisällä oleviin luokkiin, suoritetaan.

@AfterTest: Annotoitu menetelmä suoritetaan, kun kaikki tunnisteen sisällä oleviin luokkiin kuuluvat testimenetelmät on suoritettu.

@BeforeGroups: Luettelo ryhmistä, joita tämä määritysmenetelmä suorittaa ennen. Tämä menetelmä taatusti suoritetaan vähän ennen kuin ensimmäinen testimenetelmä, joka kuuluu johonkin näistä ryhmistä, vedetään.

@AfterGroups: Luettelo ryhmistä, joiden jälkeen tämä määritysmenetelmä suoritetaan. Tämän menetelmän taataan toimivan pian sen jälkeen, kun viimeinen testimenetelmä, joka kuuluu johonkin näistä ryhmistä, on vedetty.

@Ennen tuntia: Annotoitu menetelmä ajetaan ennen kuin nykyisen luokan ensimmäinen testimenetelmä kutsutaan.

@Oppitunnin jälkeen: Annotoitu menetelmä suoritetaan, kun kaikki nykyisen luokan testimenetelmät on ajettu.

@BeforeMethod: Annotoitu menetelmä ajetaan ennen jokaista testimenetelmää.

@AfterMethod: Annotoitu menetelmä suoritetaan jokaisen testimenetelmän jälkeen.

@Testata: Annotoitu menetelmä on osa testitapausta

Yhteenveto

  • TestNG on testaus puitteet, jotka pystyvät tekemään Selenium helpommin ymmärrettäviä testejä ja helposti ymmärrettäviä raportteja.
  • Tärkeimmät edut TestNG yli JUnit ovat seuraavat.
    • Huomautuksia on helpompi käyttää ja ymmärtää.
    • Testitapaukset voidaan ryhmitellä helpommin.
    • TestNG antaa meille mahdollisuuden luoda rinnakkaiset testit.
  • Konsoli-ikkuna sisään Eclipse luo tekstipohjaisen tuloksen, kun taas TestNG ikkuna on hyödyllisempi, koska se antaa meille graafisen tulosteen testituloksesta sekä muita merkityksellisiä yksityiskohtia, kuten:
    • Kunkin menetelmän suoritusajat.
    • Kronologinen järjestys, jossa menetelmät suoritettiin
  • TestNG pystyy luomaan HTML-pohjaisia ​​raportteja.
  • Annotaatioissa voidaan käyttää parametreja aivan kuten tavallisesti Java TestNG menetelmiä.
  • TestNG Dataprovider on tapa siirtää parametreja testifunktioon, joka välittää eri arvoja testitapauksissa yhdellä suorituksella.