Testng-groepen – Insluiten en uitsluiten (voorbeeld)

TestNG is een testframework dat verschillende soorten testontwerpen omvat, zoals unit-, functionele, end-to-end-, UI- en integratietests.

U kunt enkele of meerdere pakketten uitvoeren (pakket betekent hier het inkapselen van een groep klassen in een geschikt director-formaat) door XML te maken en dit door Maven te laten lopen.

TestNG Groepen met voorbeeld

Wij maken gebruik van groepen Testen wanneer,

  • We willen testmethoden niet afzonderlijk definiëren in verschillende klassen (afhankelijk van functionaliteit) en
  • Tegelijkertijd wil ik sommige testgevallen negeren (niet uitvoeren) alsof ze niet in de code voorkomen.
  • Om dit uit te voeren moeten we ze groeperen. Dit doen we door de mechanismen “include” en “exclude” te gebruiken die worden ondersteund in testNG.

In het onderstaande voorbeeld hebben we de syntaxis laten zien van het gebruik van groepen in het XML-bestand.

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

Hier gebruiken we 2 groepsnamen, namelijk "bonding" en "strong_ties" (dit zijn de logische namen die u naar wens kunt aanpassen).

<groups> tag definieert het begin van groepen in XML.

Pas uw XML aan om de genoemde groep uit de testklassen te kiezen. Hieronder vindt u de syntaxis voor het declareren van groepen in een XML-bestand, bijvoorbeeld

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

Laten we dus aannemen dat er 10 testmethoden in een klasse zijn.

Uit hen,

  • 6 methoden zijn getagd in de groep “bonding” en
  • 4 zitten in de groep “strong_ties”

In de toekomst gaan we maven/Java pad en gebruik de Eclipse IDE om het gebruik van groepen te demonstreren met behulp van XML-bestanden in Java gebaseerd maven-project.

XML maken voor TestNG met labels

  • XML-bestand (Extensible Markup Language) in het Maven-framework bevat de informatie van een of meer tests en wordt gedefinieerd door de label.
  • Testinformatie in XML wordt weergegeven door label en kan er één of meer bevatten TestNG klassen.
  • A Java klasse die bevat @Toets annotatie boven testmethoden wordt gedefinieerd als TestNG werkwijzen.

Er worden meerdere tags in een reeks gebruikt om een ​​werkende testNG xml te bouwen zoals , En

  • Ten eerste is tag, die een logische naam bevat die de volledige informatie definieert die aan testNG wordt gerapporteerd om een ​​uitvoeringsrapport te genereren.
  • Ten tweede , let op: het is een logische naam die de informatie bevat van het testuitvoeringsrapport, zoals geslaagd, mislukt, testgevallen overslaan en andere informatie zoals de totale tijd voor uitvoering en groepsinformatie
  • Derde iscom.group.guru99.TC_Class1” />, com.group.guru99 is het gebruikte pakket en de naam van de testklasse is 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>	

We zullen deze XML gebruiken voor de komende video die in de onderstaande secties wordt weergegeven.

“uitsluiten” of “opnemen” in test-XML

Stel dat u het gebruik van het groepsmechanisme complex vindt, dan biedt testNG XML de functionaliteit om een ​​test uit te sluiten/op te nemen.

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

Opmerking: We kunnen meerdere testgevallen tegelijk opnemen/uitsluiten, wat ook werkt met groepen.

lopen TestNG Code groeperen, opnemen, uitsluiten (videodemo)

Uitleg van de Java Code en XML met de groeperen, uitsluiten en insluiten de tag in XML.

Testscenario: Start de Guru99 demo Banking-site, verifieer daarna enkele dingen op de inlogpagina, voer inloggegevens in en verifieer een paar nieuwe dingen opnieuw in de applicatie wanneer u bent ingelogd.

lopen TestNG Groeperen, opnemen, code uitsluiten

Opmerking: Elke stap die u codeert, moet in afzonderlijke methoden worden gedeclareerd, maar wanneer deze wordt uitgevoerd, worden er testmethoden uitgevoerd, afhankelijk van de vermeldingen in het XML-bestand.

  • Methode 1: Browser initialiseren en URL starten (tc01LaunchURL())
  • Methode 2: Controleer de kop van de inlogpagina (tc02VerifyLaunchPage())
  • Methode 3: Voer gebruikersnaam en wachtwoord in op het inlogformulier (tc03EnterCredentials())
  • Methode 4: Controleer de aanwezigheid van de manager-ID op het gebruikersdashboard (tc04VerifyLoggedInPage())
  • Methode 5: Controleer nog enkele links op het gebruikersdashboard (tc05VerifyHyperlinks())

Code voor ons 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("https://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");	
    }	

}	

Let op: de inloggegevens zijn slechts 20 dagen geldig, dus als u code probeert uit te voeren op uw lokale computer, kunt u een foutmelding krijgen over ongeldige inloggegevens.

Verklaring van code:

Zoals hierboven vermeld, hebben we 5 testgevallen gemaakt voor het uitvoeren van elke actie op onafhankelijke methoden.

Voor elke methode hebben we een groepsparameter aan een bepaalde waarde gekoppeld.

In principe zijn dit de namen van de onderscheidende groepen, namelijk “sterke banden” en “bindingen”.

  • De eerste en derde methode zijn getagd als “bonding”, “strong_ties”, wat betekent dat als XML in een van de groepen wordt bijgewerkt, dit Testgeval zal rennen.
  • De tweede methode is alleen getagd met de “bonding”-groep. Dit betekent dat als XML wordt bijgewerkt met de bonding-groep. Alleen in dat geval loopt deze testcase.
  • De vierde testcase is gekoppeld aan de strong_ties-groep. Dit betekent dat deze testcase alleen wordt uitgevoerd als XML wordt bijgewerkt met de strong_ties-groepsnaam.
  • De laatste maar niet de minste vijfde testcase is gekoppeld aan de bindingsgroep, wat betekent dat deze testcase alleen wordt uitgevoerd als XML wordt bijgewerkt met de naam van de bindingsgroep.

Over het geheel genomen hebben we dus vier scenario's;

Scenario 1: We willen alle testgevallen uitvoeren, ongeacht de groepsnaam. In dit geval verwijderen we de groepstag uit het uitvoeren van XML.

Scenario 2: We willen een paar tests uitvoeren die alleen betrekking hebben op een van de groepen, namelijk strong_ties of bonding. Zie:

  • In deze video wordt de parameter Groep becommentarieerd tijdens het uitvoeren van XML. U zult dus zien dat alle testgevallen zijn uitgevoerd.
  • In vervolg op de video, nu we de groepsnaam in XML hebben opgenomen, kunt u zien dat alleen testcases specifiek voor die groep actief zijn.

Scenario 3: We gebruiken het uitsluitingsmechanisme om de testcase uit te sluiten. Raadpleeg de video

  • U ziet dat we enkele testgevallen (tc02) hebben uitgesloten door hun naam in actieve XML te schrijven. In het eindresultaat zijn genoemde testgevallen niet uitgevoerd.

Scenario 4: Ten slotte gebruiken we het include-testmechanisme om de testgevallen op te nemen (tc01LaunchURL, tc03EnterCredentials en tc05VerifyHyperlinks). Raadpleeg de video

In deze video ziet u dat testgevallen die in XML worden vermeld, alleen worden uitgevoerd tijdens de testuitvoering.

Download de code uit de code voor het bovenstaande voorbeeld-

Download de bovenstaande code

Conclusie

We hebben hier een relatief nieuwe manier geleerd om testcases uit te voeren met behulp van XML in het Maven-project.

We begonnen met een korte introductie tot testNG en gingen verder met de volledige technische specificatie van Groepen, uitsluiten en opnemen.