TestNG: Ausführen mehrerer Testsuiten in Selen

Inhaltsverzeichnis:

Anonim

Mit TestNG können Sie Testmethoden, Testklassen und Testfälle parallel in Ihrem Projekt ausführen. Durch die parallele Ausführung können wir die Ausführungszeit reduzieren, da Tests gleichzeitig in verschiedenen Threads gestartet und ausgeführt werden.

Hier erfahren Sie, wie Sie mit TestNG mehrere Klassen (auch bekannt als verschiedene Suites) ausführen.

Schritt 1) ​​Erstellen einer 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 (nennen Sie sie Flipkart.java und Snapdeal.java) und kopieren Sie den folgenden Code in die entsprechenden Klassen
  4. Erstellen Sie eine neue Datei in Ihrem Projekt und nennen Sie sie testng.xml (Stellen Sie sicher, dass Sie das Test-Plugin für Eclipse installiert haben. Anweisungen finden Sie hier). Testng.xml enthält alle Konfigurationen (Klassennamen, Testnamen und Anzugnamen).

Flipkart.java

Paket 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;öffentliche Klasse Flipkart {WebDriver-Treiber = neuer FirefoxDriver ();String username = ""; // Ändere deinen Benutzernamen und PasswrodString password = "";// Diese Methode dient zum Navigieren in der Flipkart-URL@Vor dem Unterrichtpublic void init () {driver.manage (). window (). maxim ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.flipkart.com");}}// Flipkart einloggen@Prüfungpublic void login () {driver.findElement (By.partialLinkText ("Login")). click ();driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-email")).sendKeys (Benutzername);driver.findElement (By.cssSelector (". Fk-input.login-form-input.user-pwd")).sendKeys (Passwort);driver.findElement (By.cssSelector (". submit-btn.login-btn.btn")). click ();}}// Nach Produkt suchen@Prüfungpublic void searchAndSelectProduct () {driver.findElement (By.id ("fk-top-search-box")). sendKeys ("moto g3");driver.findElement (By.cssSelector ("Suchleiste-submit.fk-font-13.fk-font-fett")).klicken();// wähle das erste Element in den Suchergebnissen ausString css = ".gd-row.browse-grid-row: n-tes Typ (1)> div: n-tes Kind (1)> div> div: n-tes Kind (2)> div> a";driver.findElement (By.cssSelector (css)). click ();}}@Prüfungpublic void buyAndRemoveFromCart () {driver.findElement (By.cssSelector (". Btn-express-checkout.btn-big.current")).klicken();driver.findElement (By.cssSelector (". remove.fk-inline-block")). click ();Alert a = driver.switchTo (). Alert ();a.accept ();}}@Prüfungpublic void logout () {Aktionen s = neue Aktionen (Treiber);WebElement user = driver.findElement (By.partialLinkText (Benutzername));s.moveToElement (Benutzer) .build (). perform ();driver.findElement (By.linkText ("Logout")). click ();}}@Nach dem Unterrichtpublic void quit () {driver.close ();}}}}

SnapDeal.java

Paket 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;öffentliche Klasse SnapDeal {WebDriver-Treiber = neuer FirefoxDriver ();String username = ""; // Ändere deinen Benutzernamen und PasswrodString password = "";String pinCode = "";// Diese Methode dient zum Navigieren in der Snapdeal-URL@Vor dem Unterrichtpublic void init () {driver.manage (). window (). maxim ();driver.manage (). timeouts (). implicitlyWait (60, TimeUnit.SECONDS);driver.navigate (). to ("https://www.snapdeal.com");}}// Flipkart einloggen@Prüfungpublic void login () {driver.findElement (By.xpath ("// button [text () = 'Login']")). click ();driver.switchTo (). frame ("loginIframe");driver.findElement (By.cssSelector ("div [onClick = 'getLoginForm ()']")).klicken();driver.findElement (By.id ("j_username")). sendKeys (Benutzername);driver.findElement (By.id ("j_password_login")). sendKeys (Passwort);driver.findElement (By.id ("signin_submit")). click ();driver.switchTo (). defaultContent ();}}// Nach Produkt suchen@Prüfungpublic void searchAndSelectProduct () {driver.findElement (By.cssSelector (". col-xs-20.searchformInput.keyword")).sendKeys ("iphone 6s");driver.findElement (By.cssSelector (". sd-icon.sd-icon-search")). click ();// wähle das erste Element in den Suchergebnissen ausString css = ".product_grid_row: n-tes Typ (1)> div: n-tes Kind (1)";driver.findElement (By.cssSelector (css)). click ();}}@Prüfungpublic void buyAndRemoveFromCart () {driver.findElement (By.xpath ("// li [enthält (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 ();}}@Prüfungpublic void logout () {driver.findElement (By.linkText ("START SHOPPING NOW")). click ();Aktionen s = neue Aktionen (Treiber);WebElement user = driver.findElement (By.cssSelector (". SD-icon.sd-icon-user"));s.moveToElement (Benutzer) .build (). perform ();driver.findElement (By.linkText ("Logout")). click ();}}@Nach dem Unterrichtpublic void quit () {driver.close ();}}}}

TestNg.xml

Die endgültige Projektstruktur sieht wie folgt aus:

Schritt 2) Parallele Ausführung in TestNG

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

1) Thread-Anzahl : Dies wird für die parallele Ausführung basierend auf dem Nummernskript verwendet. Es wird in paralleler oder sequentieller Reihenfolge ausgeführt.

2) ausführlich : Es wird verwendet, um die Ausführungsdetails in der Konsole zu protokollieren. Der Wert sollte 1-10 sein. Die Protokolldetails im Konsolenfenster werden detaillierter und klarer, wenn Sie den Wert des ausführlichen Attributs in der Konfigurationsdatei testng.xml erhöhen.

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

4) Parallel : Um Skripte parallel auszuführen, kann der Wert Tests / Klassen / Methoden / Suites sein. Der Standardwert ist none

Klicken Sie mit der rechten Maustaste auf die Datei 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 die folgende Ausgabe.

Ausgabe:

1) Name der Suite in testng.xml

2) Name des Tests in testng.xml

3) Name der Klasse in testng.xml

4) Methodennamen, die mit @Test in der Java-Datei versehen sind

Ebenso wird die Testsuite für Snap Deal ausgeführt.

Fazit:

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