TestNG Tutorial: Was ist Annotations & Framework? Selenium

Was bedeutet TestNG?

TestNG ist ein Automatisierungstest-Framework, bei dem NG für „Next Generation“ steht. TestNG ist inspiriert von JUnit welches die Anmerkungen (@) verwendet. TestNG überwindet die Nachteile von JUnit und soll machen End-to-End-Tests einfach.

Die richtigen TestNGkönnen Sie einen ordnungsgemäßen Bericht erstellen und leicht herausfinden, wie viele Testfälle bestanden, fehlgeschlagen und übersprungen wurden. Sie können die fehlgeschlagenen Testfälle separat ausführen.

Beispielsweise:

  • Angenommen, Sie haben fünf Testfälle, für jeden Testfall wird eine Methode geschrieben (nehmen Sie an, dass das Programm mit der Hauptmethode ohne Verwendung von testNG geschrieben wird). Wenn Sie dieses Programm zuerst ausführen, werden drei Methoden erfolgreich ausgeführt und die vierte Methode schlägt fehl. Korrigieren Sie dann die in der vierten Methode vorhandenen Fehler. Jetzt möchten Sie nur noch die vierte Methode ausführen, da die ersten drei Methoden ohnehin erfolgreich ausgeführt werden. Dies ist nicht möglich, ohne TestNG.
  • Die TestNG in Selenium bietet eine Option, nämlich die Datei testng-failed.xml im Testausgabeordner. Wenn Sie nur fehlgeschlagene Testfälle ausführen möchten, bedeutet dies, dass Sie diese XML-Datei ausführen. Es werden nur fehlgeschlagene Testfälle ausgeführt.

Neben dem oben genannten Konzept erfahren Sie mehr darüber TestNG, wie zum Beispiel, was sind die Vorteile von TestNG, wie man Testmethoden mit @test-Annotationen erstellt, wie man diese Klassen in Test-Suite-Dateien konvertiert und über Eclipse sowie über die Befehlszeile ausführt.

Warum verwenden TestNG mit Selenium?

Standard Selenium Tests generieren kein ordnungsgemäßes Format für die Testergebnisse. Benutzen TestNG in Selenium, können wir Testergebnisse generieren.

brauchen Selenium Benutzer nutzen dies mehr als Juni wegen seiner Vorteile. Es gibt so viele Funktionen von TestNG, aber wir werden uns nur auf die wichtigsten konzentrieren, die wir verwenden können SeleniumIm Folgenden sind die wichtigsten Merkmale von Selenium TestNG:

  • Erstellen Sie den Bericht in einem geeigneten Format, einschließlich der Anzahl der Testfallläufe, der Anzahl der bestandenen Testfälle, der Anzahl der fehlgeschlagenen Testfälle und der Anzahl der übersprungenen Testfälle.
  • Mehrere Testfälle können einfacher gruppiert werden, indem sie in eine Datei testng.xml konvertiert werden. Darin können Sie Prioritäten festlegen, welcher Testfall zuerst ausgeführt werden soll.
  • Derselbe Testfall kann mehrmals ohne Schleifen ausgeführt werden, indem einfach das Schlüsselwort „Invocation Count“ verwendet wird.
  • Mit testng können Sie mehrere Testfälle in mehreren Browsern ausführen, d. h. plattformübergreifend. Browsertests.
  • Die TestNG Das Framework kann problemlos in Tools wie integriert werden TestNG Maven, Jenkins usw.
  • Die im Test verwendeten Anmerkungen sind sehr leicht zu verstehen, z. B. @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest
  • WebDriver verfügt über keinen nativen Mechanismus zum Generieren von Berichten. TestNG kann den Bericht in einem lesbaren Format wie dem unten gezeigten generieren.
  • Verwenden Sie die TestNG mit Selenium

  • TestNG vereinfacht die Codierung der Tests. In unseren Tests ist keine statische Hauptmethode mehr erforderlich. Die Abfolge der Aktionen wird durch leicht verständliche Annotationen geregelt, die keine statischen Methoden erfordern.
  • Verwenden Sie die TestNG mit Selenium

    Verwenden Sie die TestNG mit Selenium

  • Nicht abgefangene Ausnahmen werden automatisch von behandelt TestNG ohne den Test vorzeitig abzubrechen. Diese Ausnahmen werden im Bericht als fehlgeschlagene Schritte gemeldet.

Vorteile von TestNG übrig JUnit

Es gibt drei Hauptvorteile von TestNG übrig JUnit:

  • Anmerkungen sind leichter zu verstehen
  • Testfälle können einfacher gruppiert werden
  • Parallele Tests sind möglich

Was ist Annotation in TestNG?

Anmerkungen in TestNG sind Codezeilen, die steuern können, wie die darunter liegende Methode ausgeführt wird. Ihnen wird immer das @-Symbol vorangestellt. Ein sehr frühes und schnelles TestNG Beispiel ist das unten gezeigte.

Anmerkung in TestNG

Anmerkungen werden später im Abschnitt „Anmerkungen in TestNG„Es ist also völlig in Ordnung, wenn Sie das oben Gesagte nicht verstehen TestNG Beispiel gerade noch. Es ist nur wichtig, vorerst zu beachten, dass Anmerkungen in TestNG sind einfacher zu programmieren und zu verstehen als in JUnit.

Die Möglichkeit, Tests parallel auszuführen, ist in verfügbar TestNG aber nicht in JUnit, So dass die TestNG Das Framework wird von Testern bevorzugt, die es verwenden Selenium Gitter

So schreiben Sie Testfälle in TestNG?

Schritt 1) Schreiben Sie Ihre Geschäftslogik und fügen Sie die ein TestNG Anmerkungen in Ihrem Code.
Schritt 2) Fügen Sie weitere Informationen wie Klassennamen, Gruppennamen, Paketnamen usw. hinzu
Schritt 3) Führen Sie die TestNG.

Testfall erstellen mit TestNG Anmerkungen

Jetzt lernen wir, wie wir unseren ersten Testfall erstellen TestNG Anmerkungen in Selenium:

Bevor wir einen Testfall erstellen, sollten wir zunächst einen neuen einrichten TestNG Projekt in Eclipse und benennen Sie es als „ErsterTestNGProjekt".

Ein neues einrichten TestNG PROJEKT

Schritt 1: Klicken Sie auf Datei > Neu > Java PROJEKT

Ein neues einrichten TestNG PROJEKT

Schritt 2: Geben Sie „Zuerst“ einTestNGGeben Sie „Projekt“ als Projektnamen ein und klicken Sie dann auf „Weiter“.

Ein neues einrichten TestNG PROJEKT

Schritt 3: Wir beginnen nun mit dem Import TestNG Bibliotheken zu unserem Projekt. Klicken Sie auf die Registerkarte „Bibliotheken“ und dann auf „Bibliothek hinzufügen…“.

Ein neues einrichten TestNG PROJEKT

Schritt 4: Wählen Sie im Dialogfeld „Bibliothek hinzufügen“ die Option „TestNG“ und klicken Sie auf Weiter.

Ein neues einrichten TestNG PROJEKT

Schritt 5: Klicken Sie auf Fertig stellen.

Ein neues einrichten TestNG PROJEKT

Das solltest du merken TestNG ist in der Bibliotheksliste enthalten.

Ein neues einrichten TestNG PROJEKT

Schritt 6: Wir werden nun die JAR-Dateien hinzufügen, die das enthalten Selenium API. Diese Dateien finden Sie im Java Client-Treiber, den wir heruntergeladen haben von https://www.selenium.dev/downloads/ als wir es installierten Selenium und Eclipse in den vorherigen Kapiteln.

Ein neues einrichten TestNG PROJEKT

Navigieren Sie dann zu der Stelle, an der Sie das platziert haben Selenium JAR-Dateien.

Ein neues einrichten TestNG PROJEKT

Nachdem Sie die externen JARs hinzugefügt haben, sollte Ihr Bildschirm so aussehen.

Ein neues einrichten TestNG PROJEKT

Schritt 7: Klicken Sie auf Fertig stellen und überprüfen Sie, ob unser FirstTestNGProjekt ist sichtbar auf Eclipses Paket-Explorer-Fenster.

Ein neues einrichten TestNG PROJEKT

So erstellen Sie ein neues TestNG Testdatei

Jetzt sind wir mit der Einrichtung unseres Projekts hier fertig TestNG Tutorial, lassen Sie uns ein neues erstellen TestNG Datei.

Schritt 1: Klicken Sie auf „src“ und wählen Sie „Andere“.
Klicken Sie mit der rechten Maustaste auf den Paketordner „src“ und wählen Sie dann „Neu“ > „Andere…“

Erstelle eine neue TestNG Testdatei

Schritt 2: Select TestNG Klasse.
Klicken Sie auf TestNG Ordner und wählen Sie „TestNG Klasse“-Option. Weiter klicken.

Erstelle eine neue TestNG Testdatei

Schritt 3: Geben Sie die Werte ein.
Geben Sie die unten angegebenen Werte in die entsprechenden Eingabefelder ein und klicken Sie auf Fertig stellen. Beachten Sie, dass wir unseren Java Datei als „ErsteTestNGDatei".

Erstelle eine neue TestNG Testdatei

Schritt 4: Vorlage erstellt.
Eclipse sollte automatisch die Vorlage für unsere erstellen TestNG Datei unten gezeigt.

Erstelle eine neue TestNG Testdatei

Codierung unseres First TestNG Beispiel für einen Testfall

Lassen Sie uns jetzt unsere erste erstellen Testfall das wird prüfen, ob Mercury Die Homepage von Tours ist korrekt. Geben Sie Ihren Code wie unten gezeigt ein TestNG Beispiel:

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;

public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
  @Test
  public void verifyHomepageTitle() {
       
      System.out.println("launching firefox browser"); 
      System.setProperty("webdriver.gecko.driver", driverPath);
      driver = new FirefoxDriver();
      driver.get(baseUrl);
      String expectedTitle = "Welcome: Mercury Tours";
      String actualTitle = driver.getTitle();
      Assert.assertEquals(actualTitle, expectedTitle);
      driver.close();
  }
}

Beachten Sie Folgendes.

  • TestNG erfordert keine main()-Methode.
  • Methoden müssen nicht statisch sein.
  • Wir haben die Annotation @Test verwendet. @Test wird verwendet, um mitzuteilen, dass es sich bei der darunter liegenden Methode um einen Testfall handelt. In diesem Fall haben wir die Methode „verifyHomepageTitle()“ als unseren Testfall festgelegt und darüber eine „@Test“-Annotation platziert.
  • Da wir Anmerkungen verwenden in TestNGmussten wir das Paket org.testng.annotations.* importieren.
  • Wir haben die Assert-Klasse verwendet. Die Assert-Klasse wird verwendet, um Überprüfungsvorgänge durchzuführen in TestNG. Um es zu verwenden, müssen wir das Paket org.testng.Assert importieren.

Möglicherweise haben Sie mehrere Testfälle (also mehrere @Test-Annotationen) in einem einzigen TestNG Datei. Dies wird später im Abschnitt „Anmerkungen, die in TestNG"

Ausführen des Tests

Um den Test auszuführen, führen Sie einfach die Datei aus Eclipse wie du es normalerweise tust. Eclipse stellt zwei Ausgaben bereit – eine im Konsolenfenster und die andere im TestNG Ergebnisfenster.

Ausführen des Tests

Ausführen des Tests

Prüfberichte erstellt von TestNG

Das Konsolenfenster in Eclipse gibt einen textbasierten Bericht über unsere Testfallergebnisse, während die TestNG Das Ergebnisfenster zeigt uns eine grafische Darstellung.

Überprüfung der von erstellten Berichte TestNG

Generieren von HTML-Berichten

TestNG verfügt über die Möglichkeit, Berichte im HTML-Format zu erstellen.

Schritt 1: Nach dem Ausführen unseres FirstTestNGKlicken Sie in der Datei, die wir im vorherigen Abschnitt erstellt haben, mit der rechten Maustaste auf den Projektnamen (FirstTestNGProjekt) im Projekt-Explorer-Fenster und klicken Sie dann auf die Option „Aktualisieren“.

Generieren von HTML-Berichten

Schritt 2: Beachten Sie, dass ein Ordner „test-output“ erstellt wurde. Erweitern Sie es und suchen Sie nach einer index.html-Datei. Diese HTML-Datei ist ein Bericht über die Ergebnisse des letzten Testlaufs.

Generieren von HTML-Berichten

Schritt 3: Double-Klicken Sie auf die Datei index.html, um sie darin zu öffnen Eclipses integrierter Webbrowser. Sie können diese Seite jederzeit aktualisieren, nachdem Sie Ihren Test erneut ausgeführt haben, indem Sie einfach F5 drücken, wie in normalen Webbrowsern.

Generieren von HTML-Berichten

Anmerkungen, die in verwendet werden TestNG

Im vorherigen Abschnitt wurde Ihnen die Annotation @Test vorgestellt. Jetzt werden wir fortgeschrittenere Anmerkungen und ihre Verwendung untersuchen.

Mehrere Testfälle

Wir können mehrere @Test-Annotationen in einer einzigen verwenden TestNG Datei. Standardmäßig werden mit @Test annotierte Methoden alphabetisch ausgeführt. Siehe den Code unten. Obwohl die Methoden c_test, a_test und b_test im Code nicht alphabetisch geordnet sind, werden sie als solche ausgeführt.

Anmerkungen, die in verwendet werden TestNG

Führen Sie diesen Code aus und klicken Sie auf der generierten Seite index.html auf „Chronologische Ansicht“.

Anmerkungen, die in verwendet werden TestNG

Parameter

Wenn Sie möchten, dass die Methoden in einer anderen Reihenfolge ausgeführt werden, verwenden Sie den Parameter „priority“. Parameter sind Schlüsselwörter, die die Funktion der Anmerkung ändern.

  • Parameter erfordern, dass Sie ihnen einen Wert zuweisen. Dazu platzieren Sie ein „=“ daneben und anschließend den Wert.
  • Parameter werden in Klammern eingeschlossen, die wie im unten gezeigten Codeausschnitt direkt nach der Anmerkung platziert werden.

Parameter

TestNG führt die @Test-Annotation mit dem niedrigsten bis zum größten Prioritätswert aus. Es ist nicht erforderlich, dass Ihre Prioritätswerte fortlaufend sind.

Parameter

Die TestNG Der HTML-Bericht bestätigt anhand des aufsteigenden Prioritätswerts, dass die Methoden ausgeführt wurden.

Parameter

Mehrere Parameter

Neben „priority“ verfügt @Test über einen weiteren Parameter namens „alwaysRun“, der nur auf „true“ oder „false“ gesetzt werden kann. Um zwei oder mehr Parameter in einer einzelnen Anmerkung zu verwenden, trennen Sie sie durch ein Komma wie das unten gezeigte.

@Test(priority = 0, alwaysRun = true)

Mehrere Parameter

@BeforeTest und @AfterTest

@BeforeTest Methoden unter dieser Annotation werden ausgeführt vor dem ersten Testfall in der TestNG Datei.
@ AfterTest Methoden unter dieser Annotation werden ausgeführt Immerhin Testfälle in der TestNG Datei werden ausgeführt.

Betrachten Sie den folgenden Code.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     
     @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Wenn wir die in der Tabelle dargestellte Logik und den obigen Code anwenden, können wir vorhersagen, dass die Reihenfolge, in der die Methoden ausgeführt werden, wie folgt ist:

  • 1st – launchBrowser()
  • 2nd – verifyHomepageTitle()
  • 3rd – terminalBrowser()

Die Platzierung der Anmerkungsblöcke kann ausgetauscht werden, ohne dass sich dies auf die chronologische Reihenfolge ihrer Ausführung auswirkt. Lassen Sie uns mit a verstehen TestNG Beispiel und versuchen Sie, die Anmerkungsblöcke so neu anzuordnen, dass Ihr Code dem folgenden ähnelt.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver ; 
     @AfterTest                            //Jumbled
      public void terminateBrowser(){
          driver.close();
      }
     @BeforeTest                            //Jumbled
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver = new FirefoxDriver();
          driver.get(baseUrl);
      }
      @Test                                //Jumbled
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
     }
      
}

Führen Sie den obigen Code aus und beachten Sie das

Mehrere Parameter

@BeforeMethod und @AfterMethod

@BeforeMethod Methoden unter dieser Annotation werden ausgeführt vor jeder Methode in jedem Testfall.
@ AfterMethod Methoden unter dieser Annotation werden ausgeführt nach jeder Methode in jedem Testfall.

In Mercury Touren, nehmen wir an, wir möchten die Titel der Zielseiten der beiden folgenden Links überprüfen.

Mehrere Parameter

Der Ablauf unseres Tests wäre:

  • Gehen Sie zur Homepage und überprüfen Sie den Titel.
  • Klicken Sie auf REGISTRIEREN und überprüfen Sie den Titel der Zielseite.
  • Gehen Sie zurück zur Startseite und überprüfen Sie, ob der Titel noch korrekt ist.
  • Klicken Sie auf SUPPORT und überprüfen Sie den Titel der Zielseite.
  • Gehen Sie zurück zur Startseite und überprüfen Sie, ob der Titel noch korrekt ist.

Der folgende Code veranschaulicht, wie @BeforeMethod und @AfterMethod verwendet werden, um das oben erwähnte Szenario effizient auszuführen.

package firsttestngpackage;
import org.openqa.selenium.*;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
@Test
public class firsttestngfile {
    public String baseUrl = "http://demo.guru99.com/test/newtours/";
    String driverPath = "C:\\geckodriver.exe";
    public WebDriver driver; 
    public String expected = null;
    public String actual = null;
        @BeforeTest
      public void launchBrowser() {
          System.out.println("launching firefox browser"); 
          System.setProperty("webdriver.gecko.driver", driverPath);
          driver= new FirefoxDriver();
          driver.get(baseUrl);
      }
      
      @BeforeMethod
      public void verifyHomepageTitle() {
          String expectedTitle = "Welcome: Mercury Tours";
          String actualTitle = driver.getTitle();
          Assert.assertEquals(actualTitle, expectedTitle);
      }
          @Test(priority = 0)
      public void register(){
          driver.findElement(By.linkText("REGISTER")).click() ;
          expected = "Register: Mercury Tours";
          actual = driver.getTitle();
          Assert.assertEquals(actual, expected);
      }
          @Test(priority = 1)
      public void support() {
            driver.findElement(By.linkText("SUPPORT")).click() ;
            expected = "Under Construction: Mercury Tours";
            actual = driver.getTitle();
            Assert.assertEquals(actual, expected);
      }
      @AfterMethod
      public void goBackToHomepage ( ) {
            driver.findElement(By.linkText("Home")).click() ;
      }
       
      @AfterTest
      public void terminateBrowser(){
          driver.close();
      }
}

Nach der Durchführung dieses Tests wird Ihr TestNG sollte die folgende Sequenz melden.

Mehrere Parameter

Einfach ausgedrückt: @BeforeMethod sollte Methoden enthalten, die Sie ausführen müssen bevor Jeder Testfall sollte während @AfterMethod Methoden enthalten, die Sie ausführen müssen nachdem jeden Testfall.

Zusammenfassung der TestNG Anmerkungen

@BeforeSuite: Die mit Anmerkungen versehene Methode wird ausgeführt, bevor alle Tests in dieser Suite ausgeführt wurden.

@ AfterSuite: Die mit Anmerkungen versehene Methode wird ausgeführt, nachdem alle Tests in dieser Suite ausgeführt wurden.

@BeforeTest: Die mit Anmerkungen versehene Methode wird ausgeführt, bevor eine Testmethode ausgeführt wird, die zu den Klassen innerhalb des Tags gehört.

@ AfterTest: Die mit Anmerkungen versehene Methode wird ausgeführt, nachdem alle Testmethoden ausgeführt wurden, die zu den Klassen innerhalb des Tags gehören.

@BeforeGroups: Die Liste der Gruppen, vor denen diese Konfigurationsmethode ausgeführt wird. Diese Methode wird garantiert kurz vor dem Aufruf der ersten Testmethode ausgeführt, die zu einer dieser Gruppen gehört.

@ AfterGroups: Die Liste der Gruppen, nach denen diese Konfigurationsmethode ausgeführt wird. Diese Methode wird garantiert kurz nach dem Aufruf der letzten Testmethode ausgeführt, die zu einer dieser Gruppen gehört.

@Vor dem Unterricht: Die mit Anmerkungen versehene Methode wird ausgeführt, bevor die erste Testmethode in der aktuellen Klasse aufgerufen wird.

@Nach dem Unterricht: Die mit Anmerkungen versehene Methode wird ausgeführt, nachdem alle Testmethoden in der aktuellen Klasse ausgeführt wurden.

@BeforeMethod: Die mit Anmerkungen versehene Methode wird vor jeder Testmethode ausgeführt.

@ AfterMethod: Die kommentierte Methode wird nach jeder Testmethode ausgeführt.

@Prüfung: Die annotierte Methode ist Teil eines Testfalls

Fazit