TestNG @Testi prioriteet sisse Selenium
TestNG on Testimine raamistik, mis hõlmab erinevat tüüpi testikujundusi, nagu üksuse test, funktsionaalne test, otsast lõpuni, kasutajaliidese test ja integratsioonitest.
Saate käivitada ühe või mitu testjuhtumit Testng kood.
Kui testi prioriteeti pole mitme testjuhtumi käitamise ajal määratletud, TestNG määrab kogu @Testi prioriteediks null(0).
Nüüd jooksmise ajal; madalamad prioriteedid määratakse esimesena.
Demo TestNG kood ilma prioriteedita
Võtame stsenaariumi, kus kõigi testjuhtumite läbimiseks on vaja järjestamist:
Stsenaarium: Looge kood, mille puhul peate tegema Google'i otsingu konkreetse märksõnaga, öelge "Facebook". Nüüd veenduge, et brauseri pealkiri on muudetud "Facebook - Google'i otsing".
Märkus. Iga kodeeritav samm peaks olema eraldi meetodites
Meetod 1: Avage brauser, öelge Firefox (openBrowser())
Meetod 2: Käivitage veebisait Google.com (launchGoogle())
Meetod 3: sooritage otsing "Facebooki" abil (performSearchAndClick1stLink())
Meetod 4: Google'i otsingulehe pealkirja kinnitamine (FaceBookPageTitleVerification())
Kood meie stsenaariumi jaoks:
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Test; public class Priority_In_testNG { WebDriver driver; // Method 1: Open Brower say Firefox @Test public void openBrowser() { driver = new FirefoxDriver(); } // Method 2: Launch Google.com @Test public void launchGoogle() { driver.get("http://www.google.co.in"); } // Method 3: Perform a search using "Facebook" @Test public void peformSeachAndClick1stLink() { driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook"); } // Method 4: Verify Google search page title. @Test public void FaceBookPageTitleVerification() throws Exception { driver.findElement(By.xpath(".//*[@value='Search']")).click(); Thread.sleep(3000); Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true); } }
Koodi selgitus
Nagu eespool mainitud, oleme loonud 4 testjuhtumit iga toimingu sooritamiseks sõltumatutes meetodites.
- Esimene meetod (openBrowser) olekud lähtestamiseks Firefox brauser.
- Teine meetod (käivita Google) ütleb, et Google.com käivitamine on lähtestatud brauseris.
- Kolmas meetod (peformSeachAndClick1stLink)olekud, mis sooritavad otsingu otsingukastis (koos xpath (.//*[@title='Otsi']) otsingusõnaga as Facebook ja
- Neljas ja viimane meetod (FaceBookPageTitleVerification) märgib, et klõpsa Google'i otsingu ikoonil ja kinnitab, et brauseri pealkiri on muudetud Facebook – Google'i otsing.
Nüüd käivitage see kood testNG abil, nagu on näidatud videos, leiate kõik Testjuhtum ebaõnnestuvad. Ebaõnnestumise põhjus: kuna eelmise testjuhtumi läbimine sõltub sellest, siis läbitakse ainult praegune testjuhtum.
Sel juhul,
- Esimene meetod, mida rakendatakse, on openBrowser(). See sai läbi, kuna sellel ei ole mingit sõltuvust.
- Teine teostatud meetod on FaceBookPageTitleVerification(); see ebaõnnestub, kuna proovime klõpsata otsingunupul ja kinnitada brauseri pealkirja.
- Näete, et kui otsingutegevust ei töödelda, siis kuidas saab mõni muu samm läbida. See on põhjus, miks minu testjuhtumid ebaõnnestuvad.
PASSED: openBrowser FAILED: FaceBookPageTitleVerification FAILED: launchGoogle FAILED: peformSeachAndClick1stLink
Demo TestNG kood ilma prioriteedita tähestikulises järjekorras
Kui me prioriteeti ei maini, käivitab testng @Test meetodid nende meetodinimede tähestikulises järjekorras, olenemata nende rakendamise kohast koodis.
package com.guru.testngannotations; import org.testng.annotations.Test; public class TestNG_Priority_Annotations { @Test public void c_method(){ System.out.println("I'm in method C"); } @Test public void b_method(){ System.out.println("I'm in method B"); } @Test public void a_method(){ System.out.println("I'm in method A"); } @Test public void e_method(){ System.out.println("I'm in method E"); } @Test public void d_method(){ System.out.println("I'm in method D"); } }
Väljund
I'm in method A I'm in method B I'm in method C I'm in method D I'm in method E
Kuigi defineerisime meetodid juhuslikult (c, b, a, e, d), käivitas testng meetodid nende meetodite nimede alusel, võttes arvesse tähestiku järjekorda ja sama kajastus ka väljundis.
Kuidas seada prioriteet sisse TestNG
Nagu nägite eelmises näites, et selle stsenaariumi läbimiseks on vaja järjestamist, muudame eelmist koodilõiku Prioriteedi parameeter nii et iga test peaks olema vastuolus neile määratud prioriteediga.
Nüüd, nagu näete, oleme määranud igale testjuhtumile prioriteedi, tähendab, et esmalt täidetakse madalama prioriteediga väärtus.
Prioriteet testNG tegevuses
import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.Assert; import org.testng.annotations.Test; public class Priority_In_testNG { WebDriver driver; // Method 1: Open Browser say Firefox @Test (priority=1) public void openBrowser() { driver = new FirefoxDriver(); } // Method 2: Launch Google.com @Test (priority=2) public void launchGoogle() { driver.get("http://www.google.co.in"); } // Method 3: Perform a search using "Facebook" @Test (priority=3) public void peformSeachAndClick1stLink() { driver.findElement(By.xpath(".//*[@title='Search']")).sendKeys("Facebook"); } // Method 4: Verify Google search page title. @Test (priority=4) public void FaceBookPageTitleVerification() throws Exception { driver.findElement(By.xpath(".//*[@value='Search']")).click(); Thread.sleep(3000); Assert.assertEquals(driver.getTitle().contains("Facebook - Google Search"), true); } }
Koodi selgitus
Pärast igale testijuhtumile prioriteedi määramist käivitage ülaltoodud kood, kasutades testNG-d, nagu on näidatud allpool mainitud video-2-s.
Siin näete, et testjuhtumid on prioriteetsed. Esmalt täidetakse madalama prioriteediga testjuhtumid, st nüüd toimub testjuhtumites järjestikune täitmine vastavalt prioriteedile. Seega on kõik katsejuhtumid praegu läbinud.
Pange tähele eclipse'i konsooli:
Väljund :
PASSED: openBrowser PASSED: launchGoogle PASSED: peformSearchAndClick1stLink PASSED: FaceBookPageTitleVerification
Number 0 on kõrgeima prioriteediga (see käivitatakse esimesena) ja prioriteet läheb edasi antud arvu alusel, st 0 on kõrgeima prioriteediga kui 1. 1 on kõrgeima prioriteediga kui 2 ja nii edasi.
package com.guru.testngannotations; import org.testng.annotations.Test; public class TestNG_Priority_Annotations { @Test(priority=6) public void c_method(){ System.out.println("I'm in method C"); } @Test(priority=9) public void b_method(){ System.out.println("I'm in method B"); } @Test(priority=1) public void a_method(){ System.out.println("I'm in method A"); } @Test(priority=0) public void e_method(){ System.out.println("I'm in method E"); } @Test(priority=3) public void d_method(){ System.out.println("I'm in method D"); } }
Väljund
I'm in method E I'm in method A I'm in method D I'm in method C I'm in method B
Siin oleme andnud prioriteedid 0,1,3,6,9. Seega käivitatakse kõigepealt meetod, mille prioriteet on 0, ja seejärel meetod, mille prioriteet on 1 ja nii edasi. Siin ei võeta arvesse tähestikulise järjestuse meetodi nime, kuna määrasime prioriteedid
Sama prioriteediga meetodid
Võimalik, et meetodid võivad sisaldada sama prioriteeti. Sellistel juhtudel arvestab testng meetodinimede tähestikulist järjekorda, mille prioriteet on sama.
package com.guru.testngannotations; import org.testng.annotations.Test; public class TestNG_Priority_Annotations { @Test(priority=6) public void c_method(){ System.out.println("I'm in method C"); } @Test(priority=9) public void b_method(){ System.out.println("I'm in method B"); } @Test(priority=6) public void a_method(){ System.out.println("I'm in method A"); } @Test(priority=0) public void e_method(){ System.out.println("I'm in method E"); } @Test(priority=3) public void d_method(){ System.out.println("I'm in method D"); } }
Väljund
I'm in method E I'm in method D I'm in method A I'm in method C I'm in method B
Siin täidetakse 'e' ja 'd' nende prioriteetsete väärtuste alusel. Kuid meetodid "a" ja "c" sisaldavad sama prioriteediväärtust (6). Seega arvestab testng siin tähestiku 'a' ja 'c' järjekorda ning täidab need vastavalt.
Kombineerides nii prioriteetsed (sama prioriteediga) kui ka prioritiseerimata meetodid
Sel juhul käsitleme ühes testimisklassis kahte juhtumit.
- Sama prioriteetse väärtusega meetodid.
- Rohkem kui üks mitteprioriteetne meetod.
package com.guru.testngannotations; import org.testng.annotations.Test; public class TestNG_Priority_Annotations { @Test() public void c_method(){ System.out.println("I'm in method C"); } @Test() public void b_method(){ System.out.println("I'm in method B"); } @Test(priority=6) public void a_method(){ System.out.println("I'm in method A"); } @Test(priority=0) public void e_method(){ System.out.println("I'm in method E"); } @Test(priority=6) public void d_method(){ System.out.println("I'm in method D"); } }
Väljund:
I'm in method B I'm in method C I'm in method E I'm in method A I'm in method D
PASSED: b_method PASSED: c_method PASSED: e_method PASSED: a_method PASSED: d_method
Selgitus:
Esimene eelistus: Prioriteetideta meetodid: 'c' ja 'b': tähestikulise järjekorra alusel käivitati kõigepealt "b" ja seejärel "c".
Teine eelistus: Prioriteetsed meetodid: "a", "e" ja "d": "e" käivitati esimesena, kuna sellel oli kõrgeim prioriteet (0). Kuna 'a' ja 'd' meetodite prioriteetsus oli sama, arvestas testng nende meetodite nimede tähestikulist järjekorda. Nii et nende vahel hukati kõigepealt "a" ja seejärel "d".
tõstutundlik TestNG
Lihtsalt teie teadmiseks on standardne süntaks prioriteedi määratlemiseks testNG-s, st @Test (prioriteet=4), oletame, et määratlete selle mõnes teises süntaksis @Test (PRIORITY=1) siis näitab teie IDE seda kompileerimisveana. Vaadake allolevat pilti:
Järeldus
Nagu olete näinud, kui on nõue käivitada testjuhtumi komplekt kindlas järjestuses, saab seda hõlpsasti teha kasutades Prioriteet kasutades testNG-d käitamistööriistana.
See õpetus sai võimalikuks tänu Ramandeep Singhi ja Rama panusele Krishna Gadde