TestNG juhendaja

Mis on TestNG?

TestNG on automatiseerimise testimise raamistik, milles NG tรคhistab "jรคrgmist pรตlvkonda". TestNG on inspireeritud JUnit mis kasutab mรคrkusi (@). TestNG รผletab puudused JUnit ja on mรตeldud valmistamiseks otsast lรตpuni testimine lihtne.

Kasutamine TestNG, saate luua korraliku aruande ja saate hรตlpsalt teada, kui palju testjuhtumeid on lรคbitud, ebaรตnnestunud ja vahele jรคetud. Ebaรตnnestunud testjuhtumeid saate lรคbi viia eraldi.

Nรคiteks:

  • Oletame, et teil on viis testjuhtumit, iga testjuhtumi jaoks kirjutatakse รผks meetod (Oletame, et programm on kirjutatud pรตhimeetodil ilma testNG-d kasutamata). Selle programmi esmakordsel kรคivitamisel kรคivitatakse kolm meetodit edukalt ja neljas meetod ebaรตnnestub. Seejรคrel parandage neljandas meetodis esinevad vead, nรผรผd soovite kรคivitada ainult neljanda meetodi, kuna esimesed kolm meetodit kรคivitatakse niikuinii edukalt. Ilma kasutamata pole see vรตimalik TestNG.
  • . TestNG in Selenium pakub suvandit, st faili testng-failed.xml test-vรคljundkaustas. Kui soovite kรคivitada ainult ebaรตnnestunud testjuhtumeid, siis kรคivitate selle XML-faili. See kรคivitab ainult ebaรตnnestunud testjuhtumid.

Lisaks รผlaltoodud kontseptsioonile saate selle kohta rohkem teada TestNG, nagu millised on eelised TestNG, kuidas luua testmeetodeid @test annotatsioonide abil, kuidas konverteerida need klassid testimiskomplekti failiks ja kรคivitada nii lรคbi eclipse kui ka kรคsurealt.

Miks kasutada TestNG koos Selenium?

vaikimisi Selenium testid ei loo testitulemuste jaoks รตiget vormingut. Kasutades TestNG in Selenium, saame luua testitulemusi.

sild Selenium kasutajad kasutavad seda rohkem kui Junit selle eeliste tรตttu. Sellel on nii palju funktsioone TestNG, kuid keskendume ainult kรตige olulisematele, mida saame kasutada Selenium. Allpool on toodud peamised omadused Selenium TestNG:

  • Looge aruanne รตiges vormingus, sealhulgas testjuhtumite arv, lรคbitud testjuhtumite arv, ebaรตnnestunud testjuhtumite arv ja vahele jรคetud testjuhtumite arv.
  • Mitut testjuhtumit saab hรตlpsamini rรผhmitada, teisendades need failiks testng.xml. Milles saate mรครคrata prioriteedid, milline testjuhtum tuleks kรตigepealt kรคivitada.
  • Sama testjuhtumit saab ilma silmusteta mitu korda kรคivitada, kasutades selleks mรคrksรตna nimega "invocation count".
  • Testng-i abil saate kรคivitada mitu testjuhtumit mitmes brauseris, st rist brauseri testimine.
  • . TestNG raamistikku saab hรตlpsasti integreerida selliste tรถรถriistadega nagu TestNG Maven, Jenkins jne.
  • Testimisel kasutatud mรคrkused on vรคga kergesti mรตistetavad, nรคiteks: @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriveril pole aruannete loomiseks loomulikku mehhanismi. TestNG saab luua aruande loetavas vormingus, nagu allpool nรคidatud.
  • Kasutama TestNG koos Selenium

  • TestNG lihtsustab testide kodeerimist. Meie testides pole enam staatilist pรตhimeetodit vaja. Toimingute jรคrjestust reguleerivad kergesti mรตistetavad annotatsioonid, mis ei nรตua, et meetodid oleksid staatilised.
  • Kasutama TestNG koos Selenium

    Kasutama TestNG koos Selenium

  • Tabamata erandeid kรคsitleb automaatselt TestNG testi enneaegselt katkestamata. Need erandid kajastatakse aruandes ebaรตnnestunud sammudena.

Eelised TestNG รผle JUnit

Sellel on kolm peamist eelist TestNG รผle JUnit:

  • Mรคrkusi on lihtsam mรตista
  • Testjuhtumeid saab hรตlpsamini rรผhmitada
  • Vรตimalik on paralleelne testimine

Milles on annotatsioon TestNG?

Mรคrkused sisse TestNG on koodiread, mis saavad juhtida nende all oleva meetodi kรคivitamist. Nende ees on alati sรผmbol @. Vรคga varajane ja kiire TestNG Nรคide on allpool nรคidatud.

Annotatsioon sisse TestNG

Mรคrkusi kรคsitletakse hiljem jaotises โ€žAnnotatsioonid, mida kasutatakse TestNGโ€, seega on tรคiesti okei, kui te รผlaltoodust aru ei saa TestNG Nรคide veel. Praegu on lihtsalt oluline mรคrkida, et mรคrkused on sisse lรผlitatud TestNG on lihtsam kodeerida ja mรตista kui sisse JUnit.

Vรตimalus paralleelselt teste kรคivitada on saadaval TestNG aga mitte sisse JUnit, Nii TestNG raamistik on eelistatavam testijatele, kes kasutavad Selenium Vรตre.

Kuidas kirjutada testjuhtumeid TestNG?

Step 1) Kirjutage oma รคriloogika ja sisestage TestNG mรคrkused teie koodis.
Step 2) Lisage rohkem teavet, nagu klassi nimi, rรผhma nimi, paketi nimi jne
Step 3) Kรคivita TestNG.

Looge testjuhtum kasutades TestNG Annotatsioonid

Nรผรผd รตpime, kuidas luua oma esimene testjuhtum TestNG Mรคrkused sisse Selenium:

Enne testjuhtumi loomist peaksime esmalt seadistama uue TestNG Projekti sisse Eclipse ja nimetage see "EsiteksTestNGProjektโ€.

Uue seadistamine TestNG Projekt

Samm 1: Klรตpsake Fail > Uus > Java Projekt

Uue seadistamine TestNG Projekt

Samm 2: Tippige "KรตigepealtTestNGProjektโ€ kui projekti nimi, seejรคrel klรตpsake nuppu Edasi.

Uue seadistamine TestNG Projekt

Samm 3: Nรผรผd hakkame importima TestNG Raamatukogud meie projekti. Klรตpsake vahekaarti "Teekid" ja seejรคrel "Lisa raamatukogu ...".

Uue seadistamine TestNG Projekt

Samm 4: Dialoogiaknas Teegi lisamine valige "TestNGโ€Ja klรตpsake nuppu Edasi.

Uue seadistamine TestNG Projekt

Samm 5: Klรตpsake nuppu Lรตpeta.

Uue seadistamine TestNG Projekt

Peaksite seda mรคrkama TestNG on kantud raamatukogude loendisse.

Uue seadistamine TestNG Projekt

Samm 6: Lisame nรผรผd JAR-failid, mis sisaldavad Selenium API. Need failid leiate Java kliendidraiver, millest me alla laadisime https://www.selenium.dev/downloads/ kui me paigaldasime Selenium ja Eclipse eelmistes peatรผkkides.

Uue seadistamine TestNG Projekt

Seejรคrel navigeerige kohta, kuhu olete asetanud Selenium JAR-failid.

Uue seadistamine TestNG Projekt

Pรคrast vรคliste JAR-ide lisamist peaks teie ekraan vรคlja nรคgema selline.

Uue seadistamine TestNG Projekt

Samm 7: Klรตpsake nuppu Lรตpeta ja veenduge, et meie esimeneTestNGProjekt on nรคhtav EclipsePackage Exploreri aken.

Uue seadistamine TestNG Projekt

Kuidas luua uut TestNG Testfail

Nรผรผd, kui oleme oma projekti seadistamise lรตpetanud TestNG รตpetus, loome uue TestNG faili.

Samm 1: Klรตpsake 'src' ja valige muu.
Paremklรตpsake paketi kaustal "src", seejรคrel valige Uus> Muu ...

Loo uus TestNG Testfail

Samm 2: valima TestNG klass.
Klรตpsake TestNG kaust ja valige "TestNG klassโ€ valik. Klรตpsake nuppu Edasi.

Loo uus TestNG Testfail

Samm 3: Sisestage vรครคrtused.
Tippige allpool nรคidatud vรครคrtused vastavatesse sisestuskastidesse ja klรตpsake nuppu Lรตpeta. Pange tรคhele, et oleme oma nime andnud Java faili nimega โ€žFirstTestNGFailโ€.

Loo uus TestNG Testfail

Samm 4: Mall loodud.
Eclipse peaks meie jaoks malli automaatselt looma TestNG allpool nรคidatud fail.

Loo uus TestNG Testfail

Meie esimese kodeerimine TestNG Testjuhtumi nรคide

Loome nรผรผd oma esimese Testjuhtum see kontrollib, kas Mercury Toursi koduleht on รตige. Sisestage oma kood, nagu allpool nรคidatud TestNG Nรคide:

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();
  }
}

Pange tรคhele jรคrgmist.

  • TestNG ei nรตua, et teil oleks main() meetod.
  • Meetodid ei pea olema staatilised.
  • Kasutasime @Test annotatsiooni. @Test kasutatakse selleks, et รถelda, et selle all olev meetod on testjuhtum. Sel juhul oleme oma testjuhtumiks seadnud meetodi verifyHomepageTitle(), seega paigutasime selle kohale mรคrkuse โ€ž@Testโ€.
  • Kuna me kasutame annotatsioone TestNG, pidime importima paketi org.testng.annotations.*.
  • Kasutasime Assert klassi. Assert klassi kasutatakse kontrollitoimingute lรคbiviimiseks TestNG. Selle kasutamiseks peame importima paketi org.testng.Assert.

Teil vรตib รผhes รผhes olla mitu testjuhtumit (seetรตttu mitu @Test annotatsiooni). TestNG faili. Seda kรคsitletakse รผksikasjalikumalt hiljem jaotises โ€žAnnotatsioonid, mida kasutatakse TestNG. "

Testi kรคivitamine

Testi kรคivitamiseks kรคivitage fail lihtsalt Eclipse nagu tavaliselt. Eclipse pakub kaks vรคljundit โ€“ รผks konsooliaknas ja teine โ€‹โ€‹konsooliaknas TestNG Tulemuste aken.

Testi kรคivitamine

Testi kรคivitamine

Kasutaja loodud aruannete kontrollimine TestNG

Konsooli aken sisse Eclipse annab tekstipรตhise aruande meie testjuhtumi tulemuste kohta, samal ajal kui TestNG Tulemuste aken annab meile graafilise pildi.

Aruannete kontrollimine koostas TestNG

HTML-aruannete genereerimine

TestNG on vรตimeline genereerima aruandeid HTML-vormingus.

Samm 1: Pรคrast meie Esimese jooksmistTestNGEelmises jaotises loodud failil paremklรตpsake projekti nimel (EsiteksTestNGProject) aknas Project Explorer, seejรคrel klรตpsake suvandit "Vรคrskenda".

HTML-aruannete genereerimine

Samm 2: Pange tรคhele, et loodi kaust "test-vรคljund". Laiendage seda ja otsige รผles fail index.html. See HTML-fail on viimase katsetamise tulemuste aruanne.

HTML-aruannete genereerimine

Samm 3: Double-klรตpsake failil index.html selle avamiseks Eclipsesisseehitatud veebibrauser. Saate seda lehte igal ajal pรคrast testi uuesti kรคivitamist vรคrskendada, vajutades lihtsalt klahvi F5 nagu tavalistes veebibrauserites.

HTML-aruannete genereerimine

Aastal kasutatud mรคrkused TestNG

Eelmises jaotises tutvustati teile @Test annotatsiooni. Nรผรผd uurime tรคpsemaid mรคrkusi ja nende kasutusvรตimalusi.

Mitu katsejuhtumit

รœhes saab kasutada mitut @Test annotatsiooni TestNG faili. Vaikimisi kรคivitatakse @Test annoteeritud meetodid tรคhestikulises jรคrjekorras. Vaadake allolevat koodi. Kuigi meetodid c_test, a_test ja b_test ei ole koodis tรคhestikulises jรคrjekorras, kรคivitatakse need sellisena.

Aastal kasutatud mรคrkused TestNG

Kรคivitage see kood ja klรตpsake loodud index.html lehel "Kronoloogiline vaade".

Aastal kasutatud mรคrkused TestNG

parameetrid

Kui soovite, et meetodeid tรคidetaks teises jรคrjekorras, kasutage parameetrit "priority". Parameetrid on mรคrksรตnad, mis muudavad mรคrkuse funktsiooni.

  • Parameetrid nรตuavad neile vรครคrtuse mรครคramist. Selleks lisate nende kรตrvale mรคrgi โ€ž=โ€ ja seejรคrel vรครคrtuse.
  • Parameetrid on suletud sulgudesse, mis asetatakse kohe annotatsiooni jรคrele, nagu allpool nรคidatud koodilรตik.

parameetrid

TestNG kรคivitab @Test annotatsiooni madalaima prioriteediga kuni suurima vรครคrtusega. Teie prioriteetsed vรครคrtused ei pea olema jรคrjestikused.

parameetrid

. TestNG HTML-aruanne kinnitab, et meetodid kรคivitati prioriteedi kasvava vรครคrtuse alusel.

parameetrid

Mitu parameetrit

Lisaks prioriteedile on @Testil veel รผks parameeter nimega "alwaysRun", mille saab mรครคrata ainult vรครคrtusele "true" vรตi "false". Kahe vรตi enama parameetri kasutamiseks รผhes annotatsioonis eraldage need komaga nagu allpool nรคidatud.

@Test(priority = 0, alwaysRun = true)

Mitu parameetrit

@BeforeTest ja @AfterTest

@BeforeTest selle annotatsiooni all olevad meetodid kรคivitatakse enne esimest katsejuhtumit aastal TestNG fail.
@AfterTest selle annotatsiooni all olevad meetodid kรคivitatakse pรคrast kรตiki testjuhtumeid TestNG failid kรคivitatakse.

Mรตelge allolevale koodile.

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();
      }
}

Rakendades tabelis esitatud loogikat ja รผlaltoodud koodi, vรตime ennustada, et meetodite kรคivitamise jada on jรคrgmine:

  • 1st - kรคivitada brauser ()
  • 2nd โ€“ verifyHomepageTitle()
  • 3rd - terminateBrowser ()

Annotatsiooniplokkide paigutust saab vahetada, ilma et see mรตjutaks nende tรคitmise kronoloogilist jรคrjekorda. Mรตistame a-ga TestNG Nรคide ja proovige annotatsiooniplokke รผmber korraldada nii, et teie kood nรคeks vรคlja sarnane allolevaga.

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);
     }
      
}

Kรคivitage รผlaltoodud kood ja pange tรคhele

Mitu parameetrit

@BeforeMethod ja @AfterMethod

@BeforeMethod selle annotatsiooni all olevad meetodid kรคivitatakse enne iga meetodit igal katsejuhul.
@AfterMethod selle annotatsiooni all olevad meetodid kรคivitatakse pรคrast iga meetodit igal katsejuhul.

In Mercury Tours, oletame, et meile meeldib kontrollida kahe alloleva lingi sihtlehtede pealkirju.

Mitu parameetrit

Meie testi kรคik oleks jรคrgmine:

  • Minge avalehele ja kinnitage selle pealkiri.
  • Klรตpsake REGISTER ja kinnitage selle sihtlehe pealkiri.
  • Minge tagasi avalehele ja kontrollige, kas sellel on ikka รตige pealkiri.
  • Klรตpsake nuppu TUGI ja kinnitage selle sihtlehe pealkiri.
  • Minge tagasi avalehele ja kontrollige, kas sellel on ikka รตige pealkiri.

Allolev kood illustreerib, kuidas @BeforeMethod ja @AfterMethod kasutatakse รผlalmainitud stsenaariumi tรตhusaks tรคitmiseks.

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();
      }
}

Pรคrast selle testi sooritamist on teie TestNG peaks teatama jรคrgmisest jรคrjestusest.

Mitu parameetrit

Lihtsamalt รถeldes peaks @BeforeMethod sisaldama meetodeid, mida peate kรคivitama enne iga testjuhtum, samas kui @AfterMethod peaks sisaldama meetodeid, mida peate kรคivitama pรคrast iga katsejuhtum.

Kokkuvรตte TestNG Annotatsioonid

@BeforeSuite: Annoteeritud meetod kรคivitatakse enne, kui kรตik selle komplekti testid on kรคivitunud.

@AfterSuite: mรคrkustega meetod kรคivitatakse pรคrast seda, kui kรตik selle komplekti testid on kรคivitunud.

@BeforeTest: mรคrkustega meetod kรคivitatakse enne mรคrgendi sees olevatesse klassidesse kuuluva testmeetodi kรคivitamist.

@AfterTest: mรคrkustega meetod kรคivitatakse pรคrast seda, kui kรตik mรคrgendis olevatesse klassidesse kuuluvad testimeetodid on kรคivitunud.

@BeforeGroups: rรผhmade loend, mida see konfiguratsioonimeetod varem kรคivitab. Selle meetodi kรคivitamine on garanteeritud vahetult enne esimese katsemeetodi kรคivitamist, mis kuulub mรตnda neist rรผhmadest.

@AfterGroups: rรผhmade loend, mille jรคrel see konfiguratsioonimeetod kรคivitatakse. Selle meetodi kรคivitumine on garanteeritud varsti pรคrast seda, kui on kรคivitatud viimane testimismeetod, mis kuulub mรตnda neist rรผhmadest.

@BeforeClass: Annoteeritud meetod kรคivitatakse enne praeguse klassi esimese testmeetodi kรคivitamist.

@AfterClass: Annoteeritud meetod kรคivitatakse pรคrast seda, kui kรตik praeguse klassi testimeetodid on kรคivitunud.

@BeforeMethod: Annoteeritud meetod kรคivitatakse enne iga katsemeetodit.

@AfterMethod: Annoteeritud meetod kรคivitatakse pรคrast iga katsemeetodit.

@Test: Annoteeritud meetod on osa testjuhtumist

Jรคreldus

  • TestNG on testimine raamistik, mida on vรตimalik luua Selenium lihtsamini mรตistetavad testid ja hรตlpsasti mรตistetavate aruannete koostamine.
  • Peamised eelised TestNG รผle JUnit on jรคrgmised.
    • Mรคrkusi on lihtsam kasutada ja arusaadavam.
    • Testjuhtumeid saab hรตlpsamini rรผhmitada.
    • TestNG vรตimaldab meil luua paralleelkatsed.
  • Konsooli aken sisse Eclipse genereerib tekstipรตhise tulemuse, samal ajal kui TestNG aken on kasulikum, kuna see annab meile testitulemuste graafilise vรคljundi ja muid olulisi รผksikasju, nรคiteks:
    • Iga meetodi tรถรถajad.
    • Meetodite teostamise kronoloogiline jรคrjekord
  • TestNG on vรตimeline genereerima HTML-pรตhiseid aruandeid.
  • Mรคrkused vรตivad kasutada parameetreid nagu tavaliselt Java TestNG meetodid.
  • TestNG Dataprovider on viis parameetrite edastamiseks testfunktsioonile, mis edastab testjuhtumite erinevad vรครคrtused รผhe tรคitmisega.

Vรตta see postitus kokku jรคrgmiselt: