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.
- 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.
- 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.
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
Schritt 2: Geben Sie „Zuerst“ einTestNGGeben Sie „Projekt“ als Projektnamen ein und klicken Sie dann auf „Weiter“.
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…“.
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.
Das solltest du merken TestNG ist in der Bibliotheksliste enthalten.
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.
Navigieren Sie dann zu der Stelle, an der Sie das platziert haben Selenium JAR-Dateien.
Nachdem Sie die externen JARs hinzugefügt haben, sollte Ihr Bildschirm so aussehen.
Schritt 7: Klicken Sie auf Fertig stellen und überprüfen Sie, ob unser FirstTestNGProjekt ist sichtbar auf Eclipses Paket-Explorer-Fenster.
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…“
Schritt 2: Select TestNG Klasse.
Klicken Sie auf TestNG Ordner und wählen Sie „TestNG Klasse“-Option. Weiter klicken.
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".
Schritt 4: Vorlage erstellt.
Eclipse sollte automatisch die Vorlage für unsere erstellen TestNG Datei unten gezeigt.
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.
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.
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“.
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.
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.
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.
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 „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.
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.
Die TestNG Der HTML-Bericht bestätigt anhand des aufsteigenden Prioritätswerts, dass die Methoden ausgeführt wurden.
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)
@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
@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.
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.
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
- TestNG ist eine Natürlich sind wir auch auf Facebook zu finden: <br> <a href="https://www.facebook.com/tijhof.de" target="_blank" rel="noopener"><img class="alignleft wp-image-15850 size-full" src="https://tijhof.nl/wp-content/uploads/2024/03/facebookGmBh.png" alt="" width="250" height="50"></a> Rahmen, der in der Lage ist, zu erstellen Selenium Tests leichter verständlich zu machen und Berichte zu erstellen, die leicht verständlich sind.
- Die Hauptvorteile von TestNG übrig JUnit sind die folgenden.
- Anmerkungen sind einfacher zu verwenden und zu verstehen.
- Testfälle können einfacher gruppiert werden.
- TestNG lässt uns erschaffen parallele Tests.
- Das Konsolenfenster in Eclipse generiert ein textbasiertes Ergebnis, während die TestNG Fenster ist nützlicher, da es uns eine grafische Ausgabe des Testergebnisses sowie weitere aussagekräftige Details liefert, wie beispielsweise:
- Laufzeiten jeder Methode.
- Die chronologische Reihenfolge, in der die Methoden ausgeführt wurden
- TestNG ist in der Lage, HTML-basierte Berichte zu erstellen.
- Annotationen können Parameter wie üblich verwenden Java TestNG Methoden.
- TestNG Der Datenprovider ist eine Möglichkeit, Parameter an die Testfunktion zu übergeben, die in einer einzigen Ausführung unterschiedliche Werte in Testfällen übergibt.