TestNG Benutzerhandbuch
โก Intelligente Zusammenfassung
TestNG ist eine Next-Generation Java Testframework, das mit Selenium fรผr strukturierte Automatisierung, aussagekrรคftige Berichte und parallele Ausfรผhrung. Dieses Tutorial behandelt die wichtigsten Annotationen und die Projekteinrichtung in Eclipse, Schreiben des ersten Testfalls, HTML-Berichte und fortgeschrittene Parameternutzung.
Was ist TestNG?
TestNG ist ein Framework fรผr automatisierte Tests, wobei โNGโ fรผr โNext Generationโ steht. TestNG ist inspiriert von JUnit und verwendet Java Annotationen (@) zur Steuerung des Testablaufs. Dadurch wird Folgendes รผberwunden: JUnitdie frรผheren Einschrรคnkungen von zu รผberwinden und ist darauf ausgelegt, End-to-End-Tests erleichtert.
Mit TestNG Sie kรถnnen einen aussagekrรคftigen Bericht erstellen und sofort sehen, wie viele Tests bestanden, fehlgeschlagen oder รผbersprungen wurden. Sie kรถnnen auch nur die fehlgeschlagenen Tests erneut ausfรผhren.
Beispielsweise:
- Angenommen, Sie haben fรผnf Testfรคlle, jeder in seiner eigenen Methode, geschrieben ohne TestNGDrei Durchlรคufe sind erfolgreich; der vierte schlรคgt fehl. Nachdem der vierte Durchlauf behoben wurde, soll nur dieser erneut ausgefรผhrt werden, da die ersten drei bereits erfolgreich waren. Dies ist mit einer einfachen main()-Methode schwierig zu realisieren.
- TestNG stellt ein
testng-failed.xmlDatei in dastest-outputOrdner. Durch Ausfรผhren dieser XML-Datei werden nur die fehlgeschlagenen Fรคlle erneut ausgefรผhrt.
Darรผber hinaus werden Sie die Vorteile von TestNGwie man Testmethoden mit @Test-Annotationen schreibt und wie man seine Klassen in eine Testsuite umwandelt, die von dort aus ausgefรผhrt wird Eclipse oder รผber die Kommandozeile.
Warum verwenden TestNG und Selenium?
Standardmรครig Selenium Die Tests liefern keine รผbersichtlichen Ergebnisse. TestNG Sobald der Test-Runner angeschlossen ist, erzeugt er einen strukturierten Bericht, den Sie mit dem Team teilen kรถnnen.
Most Selenium Benutzer bevorzugen TestNG gegenรผber JUnit aufgrund seines breiteren Funktionsumfangs. Die wichtigsten Merkmale fรผr Selenium sind:
- Berichte, die die Anzahl der ausgefรผhrten, bestandenen, fehlgeschlagenen und รผbersprungenen Testfรคlle enthalten.
- Einfache Gruppeping von Testfรคllen รผber ein
testng.xmlDatei mit Ausfรผhrungsprioritรคten. - Wiederhole einen Test mehrmals ohne Schleifen mithilfe von
invocationCount. - Fรผhren Sie mehrere Tests auf mehreren Browsern durch โ Cross-TestsBrowsertests unterstรผtzen.
- Reibungslose Integration mit Maven, Jenkinsund andere CI-Tools.
- Readable Annotationen โ zum Beispiel @BeforeMethod, @AfterMethod, @BeforeTest, @AfterTest.
- Selenium WebDriver verfรผgt รผber keine native Berichtsfunktion; TestNG Diese Lรผcke wird mit einem รผbersichtlichen HTML-Bericht wie dem folgenden geschlossen.
- TestNG Vereinfacht den Testcode. Sie benรถtigen keine statische Hauptmethode mehr; Annotationen legen fest, was wann ausgefรผhrt wird.
- Nicht abgefangene Ausnahmen werden von TestNGSie werden als fehlgeschlagene Schritte gemeldet, ohne dass der gesamte Lauf abgebrochen wird.
Vorteile von TestNG gegenรผber JUnit
TestNG bietet drei wesentliche Vorteile gegenรผber JUnit:
- Anmerkungen sind leichter verstรคndlich und anwendbar.
- Testfรคlle kรถnnen mit weniger Aufwand gruppiert und priorisiert werden.
- Die parallele Testausfรผhrung wird standardmรครig unterstรผtzt.
Was ist eine Annotation in TestNG?
Anmerkungen in TestNG sind Codezeilen, die oberhalb einer Methode platziert werden, um deren Ausfรผhrung zu steuern. Sie beginnen immer mit dem @-Symbol. Ein einfaches Beispiel ist unten dargestellt.
Anmerkungen werden im Abschnitt ausfรผhrlich behandelt. โVerwendete Anmerkungen in TestNG" Das wird spรคter in diesem Tutorial behandelt, das obige Beispiel dient also nur dazu, die Erwartungen zu verdeutlichen. TestNG Annotationen sind einfacher zu kodieren und zu lesen als die JUnit รquivalente, und sie sind unerlรคsslich, wenn Tests durchgefรผhrt werden auf Selenium Gitter wo parallele Ausfรผhrung wichtig ist.
So schreiben Sie Testfรคlle in TestNG
Schreiben eines TestNG Der Testfall umfasst drei Schritte:
- Schreiben Sie Ihre Geschรคftslogik und platzieren Sie TestNG Anmerkungen oberhalb jeder Methode.
- Fรผgen Sie Metadaten wie Klassenname, Gruppenname und Paketname hinzu.
- Fรผhren Sie die TestNG Sie kรถnnen den Kurs entweder รผber Ihre IDE oder รผber die Kommandozeile starten.
Erstellen Sie einen Testfall mit TestNG Anmerkungen
Nun erstellen wir unseren ersten Testfall mit TestNG Anmerkungen in SeleniumBevor Sie den Test schreiben, richten Sie eine neue Umgebung ein. TestNG Projekt in Eclipse und rufe es an VornameTestNGProjekt.
Einrichten eines neuen TestNG Projekt
Schritt 1) Klicken Sie auf Datei > Neu > Java Projekt.
Schritt 2) Enter VornameTestNGProjekt als Projektnamen und klicken Weiter.
Schritt 3) Importieren Sie die TestNG Bibliotheken. Klicken Sie auf die Bibliotheken Tab und dann Bibliothek hinzufรผgenโฆ.
Schritt 4) Im Bibliothek hinzufรผgen Dialog wรคhlen TestNG und klicken auf Weiter.
Schritt 5) Klicken Sie auf Farbe.
TestNG sollte nun in der Bibliotheksliste erscheinen.
Schritt 6) Fรผgen Sie die JAR-Dateien hinzu, die Folgendes enthalten: Selenium API. Diese stammen von der Java Clienttreiber heruntergeladen von selenium.dev/downloads.
Navigieren Sie zu dem Ordner, in dem sich die Selenium JAR-Dateien werden gespeichert.
Nach dem Hinzufรผgen der externen JAR-Dateien sollte der Bildschirm wie folgt aussehen.
Schritt 7) Klicken Sie auf Farbe. Die neue VornameTestNGProjekt wird im Package Explorer angezeigt.
So erstellen Sie ein neues TestNG Testdatei
Sobald das Projekt fertig ist, erstellen Sie ein neues TestNG Datei.
Schritt 1) Klicken Sie mit der rechten Maustaste auf src Ordner und wรคhlen Sie Neu > Sonstigeโฆ.
Schritt 2) Erweitern Sie die TestNG Ordner auswรคhlen TestNG KlasseUnd klicken Sie auf Weiter.
Schritt 3) Geben Sie die unten angezeigten Werte ein und klicken Sie auf Farbe. Der Java Datei heiรt VornameTestNGReichen Sie das.
Schritt 4) Eclipse erzeugt die TestNG Vorlage siehe unten.
Programmieren Sie Ihren ersten TestNG Testfall
Erstelle das erste Testfall die den Titel des Mercury Homepage von Tours.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.Test;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@Test
public void verifyHomepageTitle() {
System.out.println("launching firefox browser");
// Selenium 4 ships Selenium Manager, so the driver path is no longer required.
driver = new FirefoxDriver();
driver.get(baseUrl);
String expectedTitle = "Welcome: Mercury Tours";
String actualTitle = driver.getTitle();
Assert.assertEquals(actualTitle, expectedTitle);
driver.quit();
}
}
Folgendes ist zu beachten:
- TestNG braucht keine
main()Methode. - Methoden mรผssen nicht statisch sein.
- Das @Prรผfung Anmerkungszeichen
verifyHomepageTitle()als Testfall. - Anmerkungen befinden sich in der
org.testng.annotations.*Paket. - Das Behaupten Klasse von
org.testng.AssertLaufwerksverifizierungen.
Sie kรถnnen mehrere @Test-Annotationen in einem einzigen TestNG Datei. Das behandeln wir in der โVerwendete Anmerkungen in TestNG" .
Ausfรผhren des Tests
Klicken Sie mit der rechten Maustaste auf die Datei und fรผhren Sie sie als Datei aus. TestNG Test. Eclipse erzeugt zwei Ausgaben โ ein Textergebnis im Konsolenfenster und ein grafisches Ergebnis in der TestNG Ergebnisfenster.
รberprรผfung der von erstellten Berichte TestNG
Das Konsolenfenster bietet eine textbasierte Zusammenfassung, wรคhrend TestNG Das Ergebnisfenster zeigt eine grafische Ansicht.
Generieren von HTML-Berichten
TestNG kann auch vollstรคndige HTML-Berichte generieren.
Schritt 1) Nach dem Rennen VornameTestNGReichen Sie dasKlicken Sie mit der rechten Maustaste auf das Projekt und wรคhlen Sie Inspiration.
Schritt 2) A Testausgabe Der Ordner wird angezeigt. Erweitern Sie ihn und suchen Sie index.html โ der HTML-Bericht fรผr den letzten Durchlauf.
Schritt 3) Double-klicken index.html um es innen zu รถffnen EclipseDrรผcken Sie F5, um die Seite nach dem Ausfรผhren neu zu laden.
Verwendete Anmerkungen TestNG
Die @Test-Annotation haben Sie bereits kennengelernt. Im Folgenden werden die nรผtzlichsten fortgeschrittenen Annotationen behandelt.
Mehrere Testfรคlle
Ein einzelner TestNG Eine Datei kann mehrere @Test-Annotationen enthalten. Standardmรครig werden mit @Test annotierte Methoden in alphabetischer Reihenfolge ausgefรผhrt. Im folgenden Codebeispiel werden die Methoden c_test, a_test und b_test Die Reihenfolge der Quellen ist alphabetisch.
Fรผhre den Code aus und รถffne die Datei. index.html. Klicken Sie Chronologische Ansicht.
Kenngrรถรen
Um die Standardreihenfolge zu รผberschreiben, verwenden Sie die priority Parameters. Parameter sind Schlรผsselwรถrter, die das Verhalten einer Annotation verรคndern.
- Weisen Sie einen Wert zu mit
=. - Setzen Sie die Parameter in Klammern, die direkt nach der Annotation stehen, wie unten gezeigt.
TestNG Fรผhrt @Test-Annotationen von der niedrigsten zur hรถchsten Prioritรคt aus. Die Prioritรคtsnummern mรผssen nicht aufeinanderfolgend sein.
Der HTML-Bericht bestรคtigt, dass die Methoden in aufsteigender Prioritรคtsreihenfolge ausgefรผhrt wurden.
Mehrere Parameter
Neben priority, @Test akzeptiert die alwaysRun Parameter (wahr oder falsch). Um zwei oder mehr Parameter in einer einzigen Annotation zu verwenden, trennen Sie diese durch ein Komma:
@Test(priority = 0, alwaysRun = true)
@BeforeTest und @AfterTest
| @BeforeTest | Methoden unter dieser Annotation werden ausgefรผhrt vor dem ersten Testfall im TestNG Datei. |
| @ AfterTest | Methoden unter dieser Annotation werden ausgefรผhrt Immerhin Testfรคlle in der TestNG Datei beendet. |
Betrachten Sie den folgenden Code.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
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.quit();
}
}
Aus der Tabelle und dem Code lรคsst sich vorhersagen, dass die Sequenz wie folgt lauten wird:
- 1. โ
launchBrowser() - 2. โ
verifyHomepageTitle() - 3. โ
terminateBrowser()
Die Platzierung der Annotationsblรถcke in der Quelldatei hat keinen Einfluss auf deren Ausfรผhrungsreihenfolge. Versuchen Sie, die Methoden wie unten gezeigt neu anzuordnen.
package firsttestngpackage;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
@AfterTest // Jumbled
public void terminateBrowser() {
driver.quit();
}
@BeforeTest // Jumbled
public void launchBrowser() {
System.out.println("launching firefox browser");
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 Code aus und รผberprรผfen Sie das Ergebnis.
@BeforeMethod und @AfterMethod
| @BeforeMethod | Methoden unter dieser Annotation werden ausgefรผhrt vor jeder Testmethode. |
| @ AfterMethod | Methoden unter dieser Annotation werden ausgefรผhrt nach jeder Testmethode. |
In Mercury Angenommen, wir mรถchten bei Touren die Titel zweier Zielseiten รผberprรผfen, die von der Startseite aus erreichbar sind.
Der Testablauf ist wie folgt:
- รffnen Sie die Startseite 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 den Titel.
- Klicken Sie auf SUPPORT und รผberprรผfen Sie den Titel der Zielseite.
- Gehen Sie zurรผck zur Startseite und รผberprรผfen Sie den Titel erneut.
Der folgende Code zeigt, wie @BeforeMethod und @AfterMethod die wiederholten Schritte handhaben.
package firsttestngpackage;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.Assert;
import org.testng.annotations.*;
public class FirstTestNGFile {
public String baseUrl = "https://demo.guru99.com/test/newtours/";
public WebDriver driver;
public String expected = null;
public String actual = null;
@BeforeTest
public void launchBrowser() {
System.out.println("launching firefox browser");
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.quit();
}
}
Nach dem Ausfรผhren des Tests TestNG Die folgende Sequenz wird gemeldet.
Kurz gesagt: Platzieren Sie die Einrichtungsschritte innerhalb @BeforeMethod und Aufrรคumarbeiten oder Navigations-Reset im Inneren @ AfterMethod Jeder Testfall beginnt und endet also in einem bekannten Zustand.
Zusammenfassung der TestNG Anmerkungen
- @BeforeSuite: wird vor allen Tests in der Testsuite ausgefรผhrt.
- @AfterSuite: wird nach allen Tests der Testsuite ausgefรผhrt.
- @BeforeTest: wird vor jeder Testmethode ausgefรผhrt, die zu den Klassen innerhalb eines Etikett.
- @AfterTest: wird ausgefรผhrt, nachdem alle Testmethoden der Klassen innerhalb eines Etikett.
- @BeforeGroups: wird kurz vor der ersten Testmethode ausgefรผhrt, die zu einer beliebigen aufgelisteten Gruppe gehรถrt.
- @AfterGroups: wird kurz nach der letzten Testmethode ausgefรผhrt, die zu einer beliebigen aufgelisteten Gruppe gehรถrt.
- @VorDerKlasse: wird vor der ersten Testmethode in der aktuellen Klasse ausgefรผhrt.
- @AfterClass: wird nach allen Testmethoden in der aktuellen Klasse ausgefรผhrt.
- @BeforeMethod: wird vor jeder Testmethode ausgefรผhrt.
- @AfterMethod: wird nach jeder Testmethode ausgefรผhrt.
- @Prรผfen: kennzeichnet die Methode als Testfall.


































