Testgruppen – Einschließen und Ausschließen (Beispiel)

TestNG ist ein Test-Framework, das verschiedene Arten von Testdesigns wie Unit-, Funktions-, End-to-End-, UI- und Integrationstests abdeckt.

Sie können einzelne oder mehrere Pakete ausführen (Paket bedeutet hier, eine Gruppe von Klassen in einem geeigneten Director-Format zu kapseln), indem Sie XML erstellen und über Maven ausführen.

TestNG-Gruppen mit Beispiel

Wir verwenden Gruppen in Testng wann,

  • Wir möchten Testmethoden nicht separat in verschiedenen Klassen definieren (abhängig von der Funktionalität) und
  • Gleichzeitig möchten Sie einige Testfälle ignorieren (nicht ausführen), als ob sie im Code nicht vorhanden wären.
  • Um dies durchzuführen, müssen wir sie also gruppieren. Dies geschieht durch die Verwendung der in testNG unterstützten „include“- und „exclude“-Mechanismen.

Im folgenden Beispiel haben wir die Syntax zur Verwendung von Gruppen in der XML-Datei gezeigt.

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

Hier verwenden wir zwei Gruppennamen, nämlich „bonding“ und „strong_ties“ (dies sind die logischen Namen, die nach Ihren Wünschen geändert werden können).

<groups> Tag definiert den Beginn von Gruppen in XML.

Passen Sie Ihr XML an, um die genannte Gruppe aus den Testklassen auszuwählen. Nachfolgend finden Sie die Syntax zum Deklarieren von Gruppen in einer XML-Datei, z

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

Nehmen wir also an, dass es in einer Klasse 10 Testmethoden gibt.

Aus ihnen,

  • 6 Methoden sind in der Gruppe „Bonding“ markiert und
  • 4 sind in der Gruppe „strong_ties“.

In Zukunft werden wir den Maven/Java-Pfad festlegen und verwenden Eclipse IDE zur Demonstration der Verwendung von Gruppen mithilfe von XML-Dateien in Javac basierendes Maven-Projekt.

Erstellen Sie XML für TestNG mit Tags

  • Die XML-Datei (Extensible Markup Language) im Maven-Framework enthält die Informationen eines oder mehrerer Tests und wird durch definiert Etikett.
  • Testinformationen in XML werden dargestellt durch Etikett und kann eine oder mehrere TestNG-Klassen enthalten.
  • Eine Java-Klasse, die enthält @Prüfung Die oben genannten Testmethoden werden als TestNG-Methoden definiert.

Mehrere Tags werden nacheinander verwendet, um eine funktionierende testNG-XML-ähnliche Datei zu erstellen , Und

  • Erstens ist Tag, das einen logischen Namen enthält, der die vollständigen Informationen definiert, die testNG zum Generieren eines Ausführungsberichts meldet.
  • Zweitens ist Beachten Sie, dass es sich um einen logischen Namen handelt, der die Informationen des Testausführungsberichts enthält, z. B. bestandene, fehlgeschlagene, übersprungene Testfälle und andere Informationen wie die Gesamtzeit für die Ausführung und Gruppeninformationen
  • Drittens istcom.group.guru99.TC_Class1” />, com.group.guru99 ist das verwendete Paket und der Name der Testklasse ist 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>	

Wir werden dieses XML für das kommende Video verwenden, das in den folgenden Abschnitten gezeigt wird.

„ausschließen“ oder „einschließen“ im Test-XML

Angenommen, Sie finden die Verwendung des Gruppenmechanismus complex Dann erleichtert testNG XML die Funktionalität zum Ausschließen/Einschließen eines Tests.

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

Hinweis: Wir können mehrere Testfälle gleichzeitig ein-/ausschließen, was auch mit Gruppen funktioniert.

TestNG Group ausführen, Code einschließen und ausschließen (Videodemo)

Erklärung des Java-Codes und XML mit dem gruppieren, ausschließen und einschließen das Tag in XML.

Testszenario: Starten Sie die Guru99-Demo-Banking-Website, überprüfen Sie anschließend einige Dinge auf der Anmeldeseite, geben Sie Anmeldeinformationen ein und überprüfen Sie einige neue Dinge in der Anwendung erneut, wenn Sie angemeldet sind.

TestNG-Gruppe ausführen, Code einschließen, ausschließen

Hinweis: Jeder Schritt, den Sie codieren, sollte in separaten Methoden deklariert werden. Bei der Ausführung werden jedoch Testmethoden abhängig von den Einträgen in der XML-Datei ausgeführt.

  • Methode 1: Browser initialisieren und URL starten (tc01LaunchURL())
  • Methode 2: Überschrift der Anmeldeseite überprüfen (tc02VerifyLaunchPage())
  • Methode 3: Geben Sie Benutzernamen und Passwort im Anmeldeformular ein (tc03EnterCredentials())
  • Methode 4: Überprüfen Sie das Vorhandensein der Manager-ID im Benutzer-Dashboard (tc04VerifyLoggedInPage())
  • Methode 5: Überprüfen Sie einige weitere Links auf dem User DashBoard (tc05VerifyHyperlinks())

Code für unser Szenario:

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

}	

Bitte beachten Sie: Die Anmeldeinformationen sind nur 20 Tage lang gültig. Wenn Sie also versuchen, Code auf Ihrem lokalen Computer auszuführen, kann die Fehlermeldung „Ungültige Anmeldeinformationen“ auftreten.

Erläuterung des Codes:

Wie oben erwähnt, haben wir 5 Testfälle erstellt, um jede Aktion in unabhängigen Methoden auszuführen.

Für jede Methode haben wir einen Gruppenparameter mit einem Wert verknüpft.

Im Grunde sind dies die Namen der differenzierenden Gruppen, also „strong_ties“ und „bonding“.

  • Die erste und dritte Methode sind mit „bonding“ und „strong_ties“ gekennzeichnet, was bedeutet, dass dies der Fall ist, wenn XML in einer der Gruppen aktualisiert wird Testfall werde rennen.
  • Die zweite Methode ist nur mit der Gruppe „bonding“ gekennzeichnet. Dies bedeutet, dass XML mit der Gruppe „bonding“ aktualisiert wird. Nur in diesem Fall wird dieser Testfall ausgeführt.
  • Der vierte Testfall ist der Gruppe „strong_ties“ zugeordnet, was bedeutet, dass dieser Testfall nur ausgeführt wird, wenn XML mit dem Gruppennamen „strong_ties“ aktualisiert wird.
  • Zu guter Letzt wird der fünfte Testfall an die Bindungsgruppe angehängt, was bedeutet, dass dieser Testfall nur ausgeführt wird, wenn XML mit dem Namen der Bindungsgruppe aktualisiert wird.

Insgesamt haben wir also vier Szenarien;

Szenario 1: Wir möchten alle Testfälle unabhängig vom Gruppennamen ausführen. In diesem Fall entfernen wir das Gruppen-Tag aus der Ausführung von XML.

Szenario 2: Wir möchten einige Tests durchführen, die sich nur auf eine der Gruppen beziehen, z. B. strong_ties oder bonding. Siehe:

  • In diesem Video wird der Gruppenparameter aus der Ausführung von XML kommentiert. Daher sehen Sie, dass alle Testfälle ausgeführt wurden.
  • Als Fortsetzung des Videos haben wir jetzt den Gruppennamen in XML eingefügt. Sie können nur Testfälle sehen, die für diese Gruppe spezifisch sind und nur ausgeführt werden.

Szenario 3: Wir verwenden den Ausschlussmechanismus, um den Testfall auszuschließen. Bitte beachten Sie das Video

  • Sie sehen, dass wir einige wenige Testfälle (tc02) ausgeschlossen haben, indem wir deren Namen in laufendes XML geschrieben haben. Im Endergebnis wurden die genannten Testfälle nicht ausgeführt.

Szenario 4: Zuletzt verwenden wir den Include-Testmechanismus, um die Testfälle (tc01LaunchURL, tc03EnterCredentials und tc05VerifyHyperlinks) einzuschließen. Bitte beachten Sie das Video

In diesem Video sehen Sie, dass in XML erwähnte Testfälle nur während der Testausführung ausgeführt werden.

Bitte laden Sie den Code aus dem Code für das obige Beispiel herunter.

Laden Sie den obigen Code herunter

Konklusion

Wir haben hier eine relativ neue Art der Ausführung von Testfällen mithilfe von XML im Maven-Projekt kennengelernt.

Wir begannen mit einer kurzen Einführung in testNG und fuhren mit der vollständigen technischen Spezifikation von Gruppen, Ausschluss und Einschluss fort.