Testgrupper – Inkluder og ekskluder (eksempel)
TestNG er en testramme, der dækker forskellige typer testdesign som enheds-, funktionelle-, end-to-end-, UI- og integrationstests.
Du kan køre enkelte eller flere pakker (pakke betyder her at indkapsle en gruppe klasser i et korrekt direktørformat) ved at oprette XML og køre det gennem maven.
TestNG Grupper med eksempel
Vi bruger grupper i Testng hvornår,
- Vi ønsker ikke at definere testmetoder separat i forskellige klasser (afhængigt af funktionalitet) og
- Vil samtidig ignorere (ikke udføre) nogle testcases, som om de ikke eksisterer i koden.
- Så for at udføre dette er vi nødt til at gruppere dem. Dette gøres ved at bruge mekanismerne "inkluder" og "ekskluder" understøttet i testNG.
I eksemplet nedenfor har vi vist syntaksen for, hvordan man bruger grupper i XML-filen.
@Test (groups = { "bonding", "strong_ties" })
Her bruger vi 2 gruppenavne, dvs. "bonding" og "strong_ties" (disse er de logiske navne, der kan ændres efter dit ønske).
<groups>
tag definerer starten af grupper i XML.
Tilpas din XML for at vælge den nævnte gruppe fra testklasserne. Nedenfor nævnt er syntaksen for, hvordan man erklærer grupper i en XML-fil, f.eks
<groups> <run> <include name="bonding" /> </run> </groups>
Så lad os antage, at der er 10 testmetoder i en klasse.
Ud af dem,
- 6 metoder er tagget i "bonding"-gruppen og
- 4 er i gruppen "strong_ties".
Fremadrettet vil vi sætte maven/Java sti og brug Eclipse IDE for at demonstrere brugen af grupper ved hjælp af XML-filer i Java baseret maven projekt.
Opret XML til TestNG med tags
- XML-fil (Extensible Markup Language) i Maven-rammeværket indeholder oplysningerne fra en eller flere tests og er defineret af tag.
- Testinformation i XML er repræsenteret ved tag og kan indeholde en eller flere TestNG klasser.
- A Java klasse, der indeholder @Prøve annotation ovenfor testmetoder er defineret som TestNG metoder.
Flere tags bruges i en sekvens til at bygge en fungerende testNG xml-lignende , og
- Først er tag, som har et logisk navn, der definerer fuld information til testNG rapporteret for at generere udførelsesrapport.
- Andet er , bemærk, at det er et logisk navn, som indeholder oplysningerne om testudførelsesrapporten som bestået, mislykket, spring over testsager og andre oplysninger som samlet tid til udførelse og gruppeinformation
- Tredje ercom.group.guru99.TC_Class1” />, com.group.guru99 er den anvendte pakke, og testklassens navn er TC_Class1.
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="Suite"> <test name="Guru 99 Smoke Test Demo"> <groups> <run> <include name="strong_ties" /> </run> </groups> <classes> <class name="com.group.guru99.TC_Class1" /> </classes> </test> </suite>
Vi vil bruge denne XML til den kommende video givet i afsnittene nedenfor.
"exclude" eller "include" i test-XML
Antag, at du finder brugen af gruppemekanismekompleks, så letter testNG XML funktionaliteten til at ekskludere/inkludere en test.
Exclude Tag: Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" /> Include Tag: Syntax for include tag <include name="${TEST_CASE_NAME}" />
Bemærk: Vi kan inkludere/udelukke flere testcases én gang ad gangen, hvilket også fungerer med grupper.
Kør TestNG Grupper, medtag, ekskludér kode (videodemo)
Forklaring af Java Kode og XML med gruppere, udelukke og inkludere tagget i XML.
Testscenarie: Start Guru99 demo Banking-websted, bekræft nogle få ting på login-siden derefter, indtast legitimationsoplysninger, og genbekræft et par nye ting på applikationen, når du er logget ind.
Bemærk: Hvert trin, du koder, skal erklæres i separate metoder, men når det udføres, vil det udføre testmetoder afhængigt af indtastningerne i XML-filen.
- Metode 1: Initialiser browser og start URL (tc01LaunchURL())
- Metode 2: Bekræft loginsideoverskrift (tc02VerifyLaunchPage())
- Metode 3: Indtast brugernavn og adgangskode på loginformularen (tc03EnterCredentials())
- Metode 4: Bekræft tilstedeværelsen af administrator-id på brugerbetjeningspanelet (tc04VerifyLoggedInPage())
- Metode 5: Bekræft nogle flere links på User DashBoard (tc05VerifyHyperlinks())
Kode til vores scenarie:
package com.group.guru99; import java.util.concurrent.TimeUnit; 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 TC_Class1 { public static final WebDriver webDriver = new FirefoxDriver();; String launchPageHeading = "//h3[text()='Guru99 Bank']"; final String userName_element = "//input[@name='uid']", password_element = "//input[@name='password']", signIn_element = "//input[@name='btnLogin']"; final String userName_value = "mngr28642", password_value = "ydAnate"; final String managerID = "//td[contains(text(),'Manger Id')]"; final String newCustomer = "//a[@href='addcustomerpage.php']", fundTransfer = "//a[@href='FundTransInput.php']"; /** * This test case will initialize the webDriver */ @Test(groups = { "bonding", "strong_ties" }) public void tc01LaunchURL() { webDriver.manage().window().maximize(); webDriver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); webDriver.get("http://www.demo.guru99.com/V4/"); } /** * Will check the presence of Heading on Login Page */ @Test(groups = { "bonding" }) public void tc02VerifyLaunchPage() { Assert.assertTrue(webDriver.findElement(By.xpath(launchPageHeading)).isDisplayed(), "Home Page heading is not displayed"); System.out.println("Home Page heading is displayed"); } /** * This test case will enter User name, password and will then click on * signIn button */ @Test(groups = { "bonding", "strong_ties" }) public void tc03EnterCredentials() { webDriver.findElement(By.xpath(userName_element)).sendKeys(userName_value); webDriver.findElement(By.xpath(password_element)).sendKeys(password_value); webDriver.findElement(By.xpath(signIn_element)).click(); } /** * This test case will verify manger's ID presence on DashBoard */ @Test(groups = { "strong_ties" }) public void tc04VerifyLoggedInPage() { Assert.assertTrue(webDriver.findElement(By.xpath(managerID)).isDisplayed(), "Manager ID label is not displayed"); System.out.println("Manger Id label is displayed"); } /** * This test case will check the presence of presence of New customer link * And FundTransfer link in Left pannel */ @Test(groups = { "bonding" }) public void tc05VerifyHyperlinks() { Assert.assertTrue(webDriver.findElement(By.xpath(newCustomer)).isEnabled(), "New customer hyperlink is not displayed"); System.out.println("New customer hyperlink is displayed"); Assert.assertTrue(webDriver.findElement(By.xpath(fundTransfer)).isEnabled(), "Fund Transfer hyperlink is not displayed"); System.out.println("Fund Transfer hyperlink is displayed"); } }
Bemærk venligst: Legitimationsoplysningerne er kun gyldige i 20 dage, så hvis du forsøger at køre kode på din lokale maskine, kan du få fejl med ugyldige legitimationsoplysninger.
Forklaring af kode:
Som nævnt ovenfor har vi lavet 5 testcases til at udføre hver handling i uafhængige metoder.
For hver metode har vi tilknyttet en gruppeparameter med en vis værdi.
Dybest set er disse navnene på de differentierende grupper, dvs. "strong_ties" & "bonding".
- Første og tredje metode er tagget til "bonding", "strong_ties", hvilket betyder, at hvis XML er opdateret i nogen af gruppen, Test sag vil køre.
- Den anden metode er kun tagget til "bonding" gruppe, betyder det, at hvis XML opdateres med bonding group. Kun i så fald kører denne testcase.
- Fjerde testcase er tagget til strong_ties group, hvilket betyder, at denne testcase kun kører, hvis XML er opdateret med strong_ties gruppenavn.
- Sidst, men ikke mindst, er femte testcase knyttet til bonding group, hvilket betyder, at denne testcase kun kører, hvis XML er opdateret med bonding group navn.
Så samlet set har vi 4 scenarier;
Scenario 1: Vi ønsker at køre alle testcases uanset gruppenavnet. I dette tilfælde vil vi fjerne gruppetag fra at køre XML.
Scenario 2: Vi ønsker at køre et par test, der kun er relateret til en af grupperne, dvs. stærke_bånd eller binding. Se venligst:
- I denne video kommenteres gruppeparameter fra at køre XML. Derfor vil du se, at alle testsager blev udført.
- I forlængelse af videoen, nu har vi inkluderet gruppenavn i XML, kan du kun se testcases, der er specifikke for den gruppe, der kun kører.
Scenario 3: Vi bruger Exclude-mekanismen til at udelukke testcasen. Se venligst videoen
- Du kan se, at vi har brugt exclude few test case (tc02) ved at skrive deres navn i at køre XML. I det endelige resultat kørte nævnte testcases ikke.
Scenario 4: Til sidst bruger vi include-testmekanismen til at inkludere testcaserne (tc01LaunchURL, tc03EnterCredentials og tc05VerifyHyperlinks). Se venligst videoen
I denne video vil du se, at testcases, som er nævnt i XML, kun kører under testens udførelse.
Hent venligst koden fra koden til ovenstående eksempel-
Konklusion
Vi har her lært en relativt ny måde at køre testcases ved hjælp af XML i Maven-projektet.
Vi startede med at give en kort introduktion til testNG og fortsatte med den fulde tekniske specifikation af grupper, ekskluder og inkluderer.