TestNG: So führen Sie mehrere Testsuiten aus Selenium

TestNG ermöglicht Ihnen die parallele Ausführung von Testmethoden, Testklassen und Testfällen in Ihrem Projekt. Durch die parallele Ausführung können wir die „Ausführungszeit“ verkürzen, da Tests gleichzeitig gestartet und ausgeführt werdenneoNormalerweise in verschiedenen Threads.

Hier erfahren Sie, wie Sie mehrere Klassen (auch verschiedene Suiten genannt) ausführen TestNG.

Schritt 1) ​​Erstellen eines TestNG.xml-Datei zum Ausführen des Tests

Befolgen Sie dazu die folgenden Schritte.

  1. Erstellen Sie ein neues Projekt in eclipse
  2. Erstellen Sie zwei Pakete in den Projekten (benennen Sie sie als com.suite1 und com.suite2).
  3. Erstellen Sie in jedem Paket eine Klasse (benennen Sie sie als Flipkart.java und Snapdeal.java) und kopieren Sie den folgenden Code in die jeweiligen Klassen
  4. Erstellen Sie eine neue Datei in Ihrem Projekt und benennen Sie sie wie folgt testng.xml (Stellen Sie sicher, dass Sie das Test-Plugin für installiert haben eclipse, Anleitung vorhanden hier). Testng.xml enthält die gesamte Konfiguration (Klassennamen, Testnamen und Anzugnamen).

Flipkart.java

package com.suite1;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class Flipkart{

	WebDriver driver = new FirefoxDriver();
	String username = ""; // Change to your username and passwrod
	String password = "";

	// This method is to navigate flipkart URL
	@BeforeClass
	public void init() {
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
		driver.navigate().to("https://www.flipkart.com");
	}

	// To log in flipkart
	@Test
	public void login() {
		driver.findElement(By.partialLinkText("Login")).click();
		driver.findElement(
				By.cssSelector(".fk-input.login-form-input.user-email"))
				.sendKeys(username);
		driver.findElement(
				By.cssSelector(".fk-input.login-form-input.user-pwd"))
				.sendKeys(password);
		driver.findElement(By.cssSelector(".submit-btn.login-btn.btn")).click();
	}

	// Search For product
	@Test
	public void searchAndSelectProduct() {
		driver.findElement(By.id("fk-top-search-box")).sendKeys("moto g3");
		driver.findElement(
				By.cssSelector("search-bar-submit.fk-font-13.fk-font-bold"))
				.click();

		// select the first item in the search results
		String css = ".gd-row.browse-grid-row:nth-of-type(1) > div:nth-child(1)>div>div:nth-child(2)>div>a";
		driver.findElement(By.cssSelector(css)).click();
	}

	@Test
	public void buyAndRemoveFromCart() {
		driver.findElement(
				By.cssSelector(".btn-express-checkout.btn-big.current"))
				.click();
		driver.findElement(By.cssSelector(".remove.fk-inline-block")).click();
		Alert a = driver.switchTo().alert();
		a.accept();
	}

	@Test
	public void logout() {
		Actions s = new Actions(driver);
		WebElement user = driver.findElement(By.partialLinkText(username));
		s.moveToElement(user).build().perform();
		driver.findElement(By.linkText("Logout")).click();
	}

	@AfterClass
	public void quit() {
		driver.close();
	}
}

SnapDeal.java

package com.suite2;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class SnapDeal {

	WebDriver driver = new FirefoxDriver();
	String username = ""; // Change to your username and passwrod
	String password = "";
	String pinCode = "";

	// This method is to navigate snapdeal URL
	@BeforeClass
	public void init() {
		driver.manage().window().maximize();
		driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
		driver.navigate().to("https://www.snapdeal.com");
	}

	// To log in flipkart
	@Test
	public void login() {
		driver.findElement(By.xpath("//button[text()='Login']")).click();

		driver.switchTo().frame("loginIframe");

		driver.findElement(By.cssSelector("div[onClick='getLoginForm()']"))
				.click();

		driver.findElement(By.id("j_username")).sendKeys(username);
		driver.findElement(By.id("j_password_login")).sendKeys(password);
		driver.findElement(By.id("signin_submit")).click();

		driver.switchTo().defaultContent();
	}

	// Search For product
	@Test
	public void searchAndSelectProduct() {
		driver.findElement(By.cssSelector(".col-xs-20.searchformInput.keyword"))
				.sendKeys("iphone 6s");
		driver.findElement(By.cssSelector(".sd-icon.sd-icon-search")).click();

		// select the first item in the search results
		String css = ".product_grid_row:nth-of-type(1)>div:nth-child(1)";
		driver.findElement(By.cssSelector(css)).click();
	}

	@Test
	public void buyAndRemoveFromCart() {

		driver.findElement(By.xpath("//li[contains(text(),'Silver')]")).click();
		driver.findElement(By.id("pincode-check")).sendKeys(pinCode);
		driver.findElement(By.id("buy-button-id")).click();
		
		driver.findElement(By.cssSelector("i[title='Delete Item']")).click();
		Alert a = driver.switchTo().alert();	
		a.accept();
	}

	@Test
	public void logout() {
		
		driver.findElement(By.linkText("START SHOPPING NOW")).click();
		Actions s = new Actions(driver);
		WebElement user = driver.findElement(By.cssSelector(".sd-icon.sd-icon-user"));
		s.moveToElement(user).build().perform();
		driver.findElement(By.linkText("Logout")).click();
	}

	@AfterClass
	public void quit() {
		driver.close();
	}
}

TestNg. Xml

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">	

<suite thread-count="1" verbose="1" name="Gmail Suite" annotations="JDK" parallel="tests">
         
  <test name="flipkart">
	 <classes>
	   <class name="com.suite1.Flipkart"/>
	 </classes>
   </test>
   
  <test name="Myntra">
     <classes>
       <class name="com.suite2.SnapDeal"/>
     </classes>
   </test>
</suite>

Die endgültige Projektstruktur sieht wie folgt aus:

Erstellen einer TestNG.xml-Datei zum Ausführen des Tests

Schritt 2) Parallele Ausführung in TestNG

Nachdem wir wie oben gezeigt eine XML-Datei erstellt haben, führen wir im nächsten Schritt den Paralleltest aus. Unten ist der Code.

Parallele Ausführung in TestNG

1) Threadanzahl: Dies wird für die parallele Ausführung basierend auf dem Zahlenskript verwendet. Die Ausführung erfolgt in paralleler oder sequentieller Reihenfolge.

2) ausführlich: Es wird verwendet, um die Ausführung zu protokollierentails in der Konsole. Der Wert sollte zwischen 1 und 10 liegen. Das Protokoll details im Konsolenfenster wird detaillierter und klarer, wenn Sie den Wert des Verbose-Attributs im erhöhen testng.xml-Konfigurationsdatei.

3) Name: Name der Suite. Hier ist es „Gmail Suite"

4) Parallel: Um Skripte parallel auszuführen, kann der Wert „tests/classes/methods/suites“ sein. Der Standardwert ist keine

Rechtsklick auf die testng.xml und wählen Sie „Als Test ausführen“ aus. Sobald dies erfolgreich ist, werden alle Ergebnisse angezeigt

Wenn Sie den obigen Code ausführen, erhalten Sie Folgendeswing Ausgabe.

Ausgang:

Parallele Ausführung in TestNG

1) Name der angegebenen Suite testng. Xml

Parallele Ausführung in TestNG

2) Name des angegebenen Tests testng. Xml

Parallele Ausführung in TestNG

3) Name der angegebenen Klasse testng. Xml

Parallele Ausführung in TestNG

4) Methodennamen mit @Test-Annotationen in der .java-Datei

Parallele Ausführung in TestNG

LikewiseAußerdem wird die Testsuite für den Snap-Deal ausgeführt.

Zusammenfassung

Hier haben wir im obigen Beispiel gesehen, wie man es benutzt Testng um einen parallelen Test auszuführen. TestNG Bietet die Möglichkeit, mehrere Tests parallel in einer einzigen Konfigurationsdatei (XML) auszuführen.