TestNG Tutorial: Was ist, Anmerkungen & Rahmen in Selen

Inhaltsverzeichnis:

Anonim

Was ist TestNG?

TestNG ist ein Automatisierungstest-Framework, in dem NG für "Next Generation" steht. TestNG ist von JUnit inspiriert, das die Anmerkungen (@) verwendet. TestNG überwindet die Nachteile von JUnit und wurde entwickelt, um End-to-End-Tests zu vereinfachen.

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

Zum Beispiel:

  • Angenommen, Sie haben fünf Testfälle, für jeden Testfall wird eine Methode geschrieben (Angenommen, das Programm wird mit der Hauptmethode ohne Verwendung von testNG geschrieben). Wenn Sie dieses Programm zuerst ausführen, werden drei Methoden erfolgreich ausgeführt, und die vierte Methode ist fehlgeschlagen. Korrigieren Sie dann die Fehler in der vierten Methode. Jetzt möchten Sie nur die vierte Methode ausführen, da die ersten drei Methoden ohnehin erfolgreich ausgeführt werden. Dies ist ohne TestNG nicht möglich.
  • Das TestNG in Selenium bietet eine Option, dh 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 obigen Konzept erfahren Sie mehr über TestNG, wie die Vorteile von TestNG, wie Sie Testmethoden mithilfe von @ test-Annotationen erstellen, wie Sie diese Klassen in Testsuite-Dateien konvertieren und über die Eclipse sowie über die Befehlszeile ausführen .

In diesem TestNG-Tutorial lernen Sie

  • Warum TestNG mit Selen verwenden?
  • Vorteile von TestNG gegenüber JUnit
  • Erstellen Sie einen Testfall mit TestNG-Anmerkungen
  • So erstellen Sie eine neue TestNG-Testdatei
    • Codierung unseres ersten TestNG-Testfallbeispiels
    • Test ausführen
  • Überprüfen von von TestNG erstellten Berichten
  • In TestNG verwendete Anmerkungen
  • Mehrere Testfälle
  • Parameter
    • Mehrere Parameter
    • Zusammenfassung der TestNG-Anmerkungen

Warum TestNG mit Selen verwenden?

Standard-Selen-Tests generieren kein geeignetes Format für die Testergebnisse. Mit TestNG in Selen können wir Testergebnisse generieren.

Die meisten Selenium-Benutzer verwenden dies aufgrund seiner Vorteile häufiger als Junit. Es gibt so viele Funktionen von TestNG, aber wir werden uns nur auf die wichtigsten konzentrieren, die wir in Selen verwenden können. Im Folgenden sind die Hauptmerkmale von Selenium TestNG aufgeführt:

  • Generieren Sie den Bericht in einem geeigneten Format, einschließlich einer Anzahl von Testfallläufen, 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 die Datei testng.xml konvertiert werden. In denen Sie Prioritäten setzen können, welcher Testfall zuerst ausgeführt werden soll.
  • Derselbe Testfall kann mehrmals ohne Schleifen ausgeführt werden, indem nur das Schlüsselwort "Aufrufanzahl" verwendet wird.
  • Mit testng können Sie mehrere Testfälle in mehreren Browsern ausführen, dh browserübergreifende Tests.
  • Das TestNG-Framework kann problemlos in Tools wie TestNG Maven, Jenkins usw. integriert werden.
  • Die beim Testen verwendeten Anmerkungen sind sehr einfach 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 erstellen.
  • TestNG vereinfacht die Codierung der Tests. In unseren Tests ist keine statische Hauptmethode mehr erforderlich. Die Reihenfolge der Aktionen wird durch leicht verständliche Anmerkungen geregelt, für die keine statischen Methoden erforderlich sind.
  • Nicht erfasste Ausnahmen werden von TestNG automatisch behandelt, ohne den Test vorzeitig zu beenden. Diese Ausnahmen werden im Bericht als fehlgeschlagene Schritte gemeldet.

Vorteile von TestNG gegenüber JUnit

Es gibt drei Hauptvorteile von TestNG gegenüber JUnit:

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

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

Anmerkungen werden später im Abschnitt "In TestNG verwendete Anmerkungen" erläutert. Es ist also vollkommen in Ordnung, wenn Sie das obige TestNG-Beispiel noch nicht verstehen. Es ist nur wichtig zu beachten, dass Anmerkungen in TestNG einfacher zu codieren und zu verstehen sind als in JUnit.

Die Möglichkeit, Tests parallel auszuführen, ist in TestNG verfügbar, jedoch nicht in JUnit. Daher wird das TestNG-Framework von Testern mit Selenium Grid bevorzugt.

Erstellen Sie einen Testfall mit TestNG-Anmerkungen

Jetzt lernen wir, wie wir unseren ersten Testfall mit TestNG Annotations in Selen erstellen:

Bevor wir einen Testfall erstellen, sollten wir zuerst ein neues TestNG-Projekt in Eclipse einrichten und es als "FirstTestNGProject" bezeichnen.

Einrichten eines neuen TestNG-Projekts

Schritt 1: Klicken Sie auf Datei> Neu> Java-Projekt

Schritt 2: Geben Sie "FirstTestNGProject" als Projektnamen ein und klicken Sie auf Weiter.

Schritt 3: Wir beginnen nun mit dem Import der TestNG-Bibliotheken in unser Projekt. Klicken Sie auf die Registerkarte "Bibliotheken" und dann auf "Bibliothek hinzufügen"

... "

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

Schritt 5: Klicken Sie auf Fertig stellen.

Sie sollten beachten, dass TestNG in der Bibliotheksliste enthalten ist.

Schritt 6: Wir werden nun die JAR-Dateien hinzufügen, die die Selenium-API enthalten. Diese Dateien befinden sich im Java-Client-Treiber, den wir bei der Installation von Selenium und Eclipse in den vorherigen Kapiteln von http://docs.seleniumhq.org/download/ heruntergeladen haben.

Navigieren Sie dann zu der Stelle, an der Sie die Selenium-JAR-Dateien abgelegt haben.

Nach dem Hinzufügen der externen JARs sollte Ihr Bildschirm folgendermaßen aussehen.

Schritt 7: Klicken Sie auf Fertig stellen und überprüfen Sie, ob unser FirstTestNGProject im Paket-Explorer-Fenster von Eclipse sichtbar ist.

So erstellen Sie eine neue TestNG-Testdatei

Nachdem wir unser Projekt in diesem TestNG-Tutorial eingerichtet haben, erstellen wir eine neue TestNG-Datei.

Schritt 1: Klicken Sie mit der rechten Maustaste auf den Paketordner "src" und wählen Sie "Neu"> "Andere"

Schritt 2: Klicken Sie auf den Ordner TestNG und wählen Sie die Option "TestNG-Klasse". Weiter klicken.

Schritt 3: Geben Sie die unten angegebenen Werte in die entsprechenden Eingabefelder ein und klicken Sie auf Fertig stellen. Beachten Sie, dass wir unsere Java-Datei als "FirstTestNGFile" bezeichnet haben.

Eclipse sollte automatisch die Vorlage für unsere unten gezeigte TestNG-Datei erstellen.

Codierung unseres ersten TestNG-Testfallbeispiels

Lassen Sie uns nun unseren ersten Testfall erstellen, der überprüft, ob die Homepage von Mercury Tours korrekt ist. Geben Sie Ihren Code wie im folgenden TestNG-Beispiel gezeigt ein:

Paket 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";öffentlicher WebDriver-Treiber;@Prüfungpublic void verifyHomepageTitle () {System.out.println ("Starten des Firefox-Browsers");System.setProperty ("webdriver.gecko.driver", driverPath);Treiber = neuer FirefoxDriver ();driver.get (baseUrl);String expectedTitle = "Willkommen: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);driver.close ();}}}}

Beachten Sie Folgendes.

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

Möglicherweise befinden sich mehrere Testfälle (daher mehrere @ Test-Anmerkungen) in einer einzelnen TestNG-Datei. Dies wird später im Abschnitt "In TestNG verwendete Anmerkungen" ausführlicher behandelt.

Test ausführen

Um den Test auszuführen, führen Sie die Datei einfach wie gewohnt in Eclipse aus. Eclipse bietet zwei Ausgänge - einen im Konsolenfenster und einen im TestNG-Ergebnisfenster.

Überprüfen von von TestNG erstellten Berichten

Das Konsolenfenster in Eclipse bietet einen textbasierten Bericht über unsere Testfallergebnisse, während das TestNG-Ergebnisfenster einen grafischen Bericht enthält.

Generieren von HTML-Berichten

TestNG kann Berichte im HTML-Format erstellen.

Schritt 1: Nachdem Sie unsere im vorherigen Abschnitt erstellte FirstTestNGFile ausgeführt haben, klicken Sie im Projekt-Explorer-Fenster mit der rechten Maustaste auf den Projektnamen (FirstTestNGProject) und klicken Sie dann auf die Option "Aktualisieren".

Schritt 2: Beachten Sie, dass ein "Testausgabe" -Ordner 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.

Schritt 3: Doppelklicken Sie auf diese index.html-Datei, um sie im integrierten Webbrowser von Eclipse zu öffnen. Sie können diese Seite jederzeit nach dem erneuten Ausführen Ihres Tests aktualisieren, indem Sie wie in normalen Webbrowsern einfach F5 drücken.

In TestNG verwendete Anmerkungen

Im vorherigen Abschnitt wurde Ihnen die Annotation @Test vorgestellt. Jetzt werden wir uns mit fortgeschritteneren Anmerkungen und deren Verwendung befassen.

Mehrere Testfälle

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

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

Parameter

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

  • Für Parameter müssen Sie ihnen einen Wert zuweisen. Sie tun dies, indem Sie ein neben sie setzen und dann den Wert gefolgt.
  • Die Parameter sind in zwei Klammern eingeschlossen, die wie nach dem unten gezeigten Code-Snippet direkt nach der Annotation stehen.

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

Der TestNG-HTML-Bericht bestätigt, dass die Methoden basierend auf dem aufsteigenden Prioritätswert ausgeführt wurden.

Mehrere Parameter

Neben "Priorität" 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 (Priorität = 0, alwaysRun = true)

@BeforeTest und @AfterTest

@BeforeTest

Methoden unter dieser Annotation werden vor dem ersten Testfall in der TestNG-Datei ausgeführt .

@ AfterTest

Methoden unter dieser Annotation werden ausgeführt, nachdem alle Testfälle in der TestNG-Datei ausgeführt wurden .

Betrachten Sie den folgenden Code.

Paket 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";öffentlicher WebDriver-Treiber;@BeforeTestpublic void launchBrowser () {System.out.println ("Starten des Firefox-Browsers");System.setProperty ("webdriver.gecko.driver", driverPath);Treiber = neuer FirefoxDriver ();driver.get (baseUrl);}}@Prüfungpublic void verifyHomepageTitle () {String expectedTitle = "Willkommen: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);}}@ AfterTestpublic void terminateBrowser () {driver.close ();}}}}

Unter Anwendung der in der Tabelle und im obigen Code dargestellten Logik können wir vorhersagen, dass die Reihenfolge, in der Methoden ausgeführt werden, wie folgt ist:

  • 1 st - launchBrowser ()
  • 2 nd - verifyHomepageTitle ()
  • 3 rd - terminateBrowser ()

Die Platzierung der Anmerkungsblöcke kann ausgetauscht werden, ohne die chronologische Reihenfolge zu beeinflussen, in der sie ausgeführt werden . Lassen Sie uns anhand eines TestNG-Beispiels verstehen und versuchen, die Anmerkungsblöcke so anzuordnen, dass Ihr Code dem folgenden ähnlich sieht.

Paket 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";öffentlicher WebDriver-Treiber;@AfterTest // Durcheinanderpublic void terminateBrowser () {driver.close ();}}@BeforeTest // Durcheinanderpublic void launchBrowser () {System.out.println ("Starten des Firefox-Browsers");System.setProperty ("webdriver.gecko.driver", driverPath);Treiber = neuer FirefoxDriver ();driver.get (baseUrl);}}@ Test // Durcheinanderpublic void verifyHomepageTitle () {String expectedTitle = "Willkommen: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);}}}}

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

@BeforeMethod und @AfterMethod

@BeforeMethod

Methoden unter dieser Annotation werden vor jeder Methode in jedem Testfall ausgeführt .

@ AfterMethod

Methoden unter dieser Annotation werden nach jeder Methode in jedem Testfall ausgeführt.

Angenommen, wir möchten in Mercury Tours die Titel der Zielseiten der beiden folgenden Links überprüfen.

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 sie noch den richtigen Titel hat.
  • Klicken Sie auf UNTERSTÜTZEN und überprüfen Sie den Titel der Zielseite.
  • Gehen Sie zurück zur Startseite und überprüfen Sie, ob sie noch den richtigen Titel hat.

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

Paket firsttestngpackage;import org.openqa.selenium. *;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.Assert;import org.testng.annotations. *;@Prüfungpublic class firsttestngfile {public String baseUrl = "http://demo.guru99.com/test/newtours/";String driverPath = "C: \\ geckodriver.exe";öffentlicher WebDriver-Treiber;public String expected = null;public String actual = null;@BeforeTestpublic void launchBrowser () {System.out.println ("Starten des Firefox-Browsers");System.setProperty ("webdriver.gecko.driver", driverPath);Treiber = neuer FirefoxDriver ();driver.get (baseUrl);}}@BeforeMethodpublic void verifyHomepageTitle () {String expectedTitle = "Willkommen: Mercury Tours";String actualTitle = driver.getTitle ();Assert.assertEquals (actualTitle, expectedTitle);}}@ Test (Priorität = 0)öffentliches nichtiges Register () {driver.findElement (By.linkText ("REGISTER")). click ();erwartet = "Register: Mercury Tours";actual = driver.getTitle ();Assert.assertEquals (tatsächlich, erwartet);}}@ Test (Priorität = 1)public void support () {driver.findElement (By.linkText ("SUPPORT")). click ();erwartet = "Im Bau: Mercury Tours";actual = driver.getTitle ();Assert.assertEquals (tatsächlich, erwartet);}}@ AfterMethodpublic void goBackToHomepage () {driver.findElement (By.linkText ("Home")). click ();}}@ AfterTestpublic void terminateBrowser () {driver.close ();}}}}

Nach dem Ausführen dieses Tests sollte Ihr TestNG die folgende Sequenz melden.

Einfach ausgedrückt sollte @BeforeMethod Methoden enthalten, die Sie vor jedem Testfall ausführen müssen, während @AfterMethod Methoden enthalten sollte, die Sie nach jedem Testfall ausführen müssen.

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, die zu den Klassen innerhalb des Tags gehören, ausgeführt wurden.

@BeforeGroups : Die Liste der Gruppen, die diese Konfigurationsmethode zuvor ausgeführt hat. 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 Aufrufen der letzten Testmethode ausgeführt, die zu einer dieser Gruppen gehört.

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

@AfterClass : 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 mit Anmerkungen versehene Methode wird nach jeder Testmethode ausgeführt.

@Test : Die mit Anmerkungen versehene Methode ist Teil eines Testfalls

Fazit

  • TestNG ist ein Testframework, mit dem Selentests leichter verständlich gemacht und Berichte erstellt werden können, die leicht zu verstehen sind.
  • Die Hauptvorteile von TestNG gegenüber JUnit sind die folgenden.
    • Anmerkungen sind einfacher zu verwenden und zu verstehen.
    • Testfälle können einfacher gruppiert werden.
    • Mit TestNG können wir parallele Tests erstellen.
  • Das Konsolenfenster in Eclipse generiert ein textbasiertes Ergebnis, während das TestNG-Fenster nützlicher ist, da es eine grafische Ausgabe des Testergebnisses sowie weitere wichtige Details wie Folgendes liefert:
    • Laufzeit jeder Methode.
    • Die chronologische Reihenfolge, in der die Methoden ausgeführt wurden
  • TestNG kann HTML-basierte Berichte erstellen.
  • Anmerkungen können Parameter wie die üblichen Java TestNG-Methoden verwenden.
  • TestNG Dataprovider ist eine Möglichkeit, Parameter an die Testfunktion zu übergeben, die in Testfällen in einer einzigen Ausführung unterschiedliche Werte übergibt.