Testgrupper – Inkludera och exkludera (exempel)

TestNG är ett testramverk som täcker olika typer av testdesigner som enhets-, funktions-, end-to-end, UI och integrationstester.

Du kan köra enstaka eller flera paket (paket betyder här att kapsla in en grupp klasser i ett korrekt regissörsformat) genom att skapa XML och köra det genom Maven.

TestNG Grupper med exempel

Vi använder grupper i Testng när,

  • Vi vill inte definiera testmetoder separat i olika klasser (beroende på funktionalitet) och
  • Vill samtidigt ignorera (inte exekvera) vissa testfall som om de inte finns i koden.
  • Så för att genomföra detta måste vi gruppera dem. Detta görs genom att använda mekanismerna "inkludera" och "uteslut" som stöds i testNG.

I exemplet nedan har vi visat syntaxen för hur man använder grupper i XML-filen.

@Test (groups = { "bonding", "strong_ties" })

Här använder vi 2 gruppnamn, dvs "bonding" och "strong_ties" (detta är de logiska namnen som kan ändras enligt dina önskemål).

<groups> taggen definierar starten av grupper i XML.

Anpassa din XML för att välja den nämnda gruppen från testklasserna. Nedan nämns syntaxen för hur man deklarerar grupper i en XML-fil, t.ex

 <groups>		
   <run>		
    <include name="bonding" />		
   </run>		
  </groups>		

Så låt oss anta att det finns 10 testmetoder i en klass.

Av dem,

  • 6 metoder är taggade i "bonding"-gruppen och
  • 4 är i gruppen "strong_ties".

Framåt kommer vi att sätta maven/Java vägen och använd Eclipse IDE för att demonstrera användningen av grupper som använder XML-filer i Java baserat maven-projekt.

Skapa XML för TestNG med taggar

  • XML-filen (Extensible Markup Language) i Maven-ramverket innehåller information om ett eller flera tester och definieras av märka.
  • Testinformation i XML representeras av märka och kan innehålla en eller flera TestNG klasser.
  • A Java klass som innehåller @Testa anteckning ovan testmetoder definieras som TestNG metoder.

Flera taggar används i en sekvens för att bygga en fungerande testNG xml-liknande , och

  • Först är taggen, som har ett logiskt namn som definierar fullständig information till testNG rapporterad för att generera exekveringsrapport.
  • Andra är , observera att det är ett logiskt namn som innehåller informationen från testkörningsrapporten som godkänt, misslyckat, hoppa över testfall och annan information som total tid för körning och gruppinformation
  • Tredje ärcom.group.guru99.TC_Class1” />, com.group.guru99 är paketet som används, och testklassens namn är 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 kommer att använda denna XML för den kommande videon som ges i avsnitten nedan.

"exkludera" eller "inkludera" i test-XML

Anta att du hittar användningen av gruppmekanismkomplex så underlättar testNG XML funktionen för att utesluta/inkludera ett test.

Exclude Tag:  Syntax for exclude tag <exclude name="${TEST_CASE_NAME}" />
Include Tag:  Syntax for include tag <include name="${TEST_CASE_NAME}" />

Notera: Vi kan inkludera/utesluta flera testfall en gång i taget, vilket också fungerar med grupper.

Körning TestNG Gruppera, inkludera, exkludera kod (videodemo)

Förklaring av Java Kod och XML med grupp, exkludera och inkludera taggen i XML.

Testscenario: Starta Guru99 demo Banking-webbplats, verifiera några saker på inloggningssidan efter det, ange inloggningsuppgifter och verifiera igen några nya saker i applikationen när du är inloggad.

Körning TestNG Gruppera, Inkludera, Exkludera kod

Notera: Varje steg som du kodar bör deklareras i separata metoder, men när det körs kommer det att köra testmetoder beroende på posterna i XML-filen.

  • Förfarande 1: Initiera webbläsaren och starta URL (tc01LaunchURL())
  • Förfarande 2: Verifiera inloggningssidans rubrik (tc02VerifyLaunchPage())
  • Förfarande 3: Ange användarnamn och lösenord på inloggningsformuläret (tc03EnterCredentials())
  • Förfarande 4: Verifiera närvaron av Manager ID på User Dashboard (tc04VerifyLoggedInPage())
  • Förfarande 5: Verifiera några fler länkar på User DashBoard (tc05VerifyHyperlinks())

Kod för vårt scenario:

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

}	

Observera: autentiseringsuppgifterna är endast giltiga i 20 dagar, så om du försöker köra kod på din lokala dator kan du få fel med ogiltiga autentiseringsuppgifter.

Förklaring av kod:

Som nämnts ovan har vi skapat 5 testfall för att utföra varje åtgärd i oberoende metoder.

För varje metod har vi associerat en gruppparameter med något värde.

I grund och botten är dessa namnen på de differentierande grupperna, dvs. "starka_band" & "bindning".

  • Första och tredje metoden är taggade till "bonding", "strong_ties" vilket betyder att om XML uppdateras i någon av gruppen, Testfall kommer att köras.
  • Den andra metoden är bara taggad till "bonding"-grupp betyder det att om XML uppdateras med bonding group. Endast i så fall kommer detta testfall att köras.
  • Fjärde testfallet är taggat till gruppen strong_ties, vilket innebär att detta testfall endast körs om XML uppdateras med gruppen strong_ties.
  • Sist men inte minst är det femte testfallet kopplat till bindningsgruppen, vilket innebär att detta testfall endast körs om XML uppdateras med bindningsgruppens namn.

Så totalt sett har vi 4 scenarier;

Scenario 1: Vi vill köra alla testfall oavsett gruppnamn. I det här fallet kommer vi att ta bort grupptaggen från att köra XML.

Scenario 2: Vi vill köra några tester som endast är relaterade till någon av grupperna, dvs. starka_band eller bindning. Vänligen se:

  • I den här videon kommenteras gruppparameter från att köra XML. Därför kommer du att se att alla testfall utfördes.
  • I fortsättningen till videon, nu har vi inkluderat gruppnamn i XML, kan du bara se testfall som är specifika för den gruppen bara körs.

Scenario 3: Vi använder Exclude-mekanismen för att utesluta testfallet. Se videon

  • Du ser att vi har använt exclude få testfall (tc02) genom att skriva deras namn i körande XML. I slutresultatet kördes inte nämnda testfall.

Scenario 4: Till sist använder vi inkluderingstestmekanismen för att inkludera testfallen (tc01LaunchURL, tc03EnterCredentials och tc05VerifyHyperlinks). Se videon

I den här videon kommer du att se att testfall som nämns i XML bara körs under testkörningen.

Ladda ner koden från koden för exemplet ovan-

Ladda ner ovanstående kod

Slutsats

Vi har här lärt oss ett relativt nytt sätt att köra testfall med XML i Maven-projektet.

Vi började med att ge en kort introduktion till testNG och fortsatte med den fullständiga tekniska specifikationen för grupper, exkludera och inkludera.