Selenium WebDriver: TestNG für Testfallmanagement und Berichterstellung



Dieses Tutorial zu Selenium WebDriver hilft Ihnen zu verstehen, wie Sie TestNG mit Selenium zum Verwalten von Testfällen und zum Generieren detaillierter Testberichte verwenden müssen.

Im vorherigen Blog habe ich Ihnen beigebracht, wie Sie Ihren ersten Selenium WebDriver-Test ausführen. In diesem Blog werde ich mich mit fortgeschrittenen Selenium WebDriver-Konzepten befassen. Ich habe bereits einige Male erwähnt, dass Selenium WebDriver Einschränkungen hinsichtlich des Testfallmanagements und der Erstellung von Testberichten aufweist. Was ist die Alternative? Ein so beliebtes Tool wie Selen muss definitiv eine Problemumgehung haben, oder? Natürlich tut es das! Wir können eine Kombination aus Selen und TestNG verwenden, um diese Einschränkung zu überwinden. Dies wird das Thema der Diskussion in diesem Blog sein.

Java verwandelt Double in Int

Falls Sie neu in Selen sind und eine Einführung in die Grundkonzepte wünschen, können Sie Ihre Reise von hier aus beginnen: ? Die anderen können jedoch in diesem Blog mit TestNG for Selenium beginnen.Sie sollten auch wissen, dass Organisationen aktiv nach Fachleuten suchen Dies macht es für Softwaretester zu einer wichtigen Fähigkeit, diese zu beherrschen.





Softwareentwickler aus der ganzen Welt sind sich einig, dass das Schreiben von Code in Testfällen einen Großteil ihrer Debugging-Zeit spart. Warum? Dies liegt daran, dass Testfälle bei der Erstellung von robustem und fehlerfreiem Code hilfreich sind. Wie macht es das? Indem wir den gesamten Code in kleinere Testfälle aufteilen und dann jeden dieser Testfälle auf Bestanden / Nicht Bestanden-Bedingungen auswerten, können wir fehlerfreien Code erstellen. Da Selenium die Ausführung von Code in Testfällen nicht unterstützt, müssen wir TestNG für denselben verwenden. Hier passt TestNG in das Selenium-Framework.

TestNG steht für Testen Sie die nächste Generation und es ist ein Open-Source-Testautomatisierungsframework, das von JUnit und NUnit inspiriert wurde. Nun, nicht nur inspiriert, sondern ein Upgrade auf diese beiden Frameworks. Sie fragen sich vielleicht, was das Upgrade hier ist?Das Upgrade mit TestNG besteht darin, dass es zusätzliche Funktionen wie Testanmerkungen, Gruppierung, Priorisierung, Parametrisierung und Sequenzierungstechniken im Code bietet, die zuvor nicht möglich waren.



Neben der Verwaltung von Testfällen können mit TestNG auch detaillierte Testberichte abgerufen werden. Es wird eine Zusammenfassung angezeigt, in der der fehlgeschlagene Testfall sowie die Gruppe, zu der er gehört, und die Klasse, in die er fällt, angezeigt werden. Wenn Fehler auf diese Weise genau lokalisiert werden können, können sie zur Erleichterung der Entwickler sofort behoben werden. Das folgende Bild zeigt die Arbeitsweise von TestNG.

testng - Selen Webdriver

Wie erledigt TestNG die Arbeit? Diese Frage wird in beantwortetIm nächsten Abschnitt dieses Selenium WebDriver-Tutorial-Blogs werde ich erläutern, wie verschiedene Testfälle mithilfe von TestNG verwaltet werden.



Selenium WebDriver Mit TestNG

Testfälle können auf eine der folgenden Arten definiert und verwaltet werden:

  1. Testanmerkungen
  2. Priorisierung
  3. Testfälle deaktivieren
  4. Methodenabhängigkeit
  5. Gruppierung
  6. Behauptungen
  7. Berichterstellung

Lassen Sie mich anfangen zu erklärenjede dieser Funktionen.

Testanmerkungen

Stellen wir uns zunächst folgende Frage: Warum müssen wir Anmerkungen verwenden? Wann können wir sie verwenden? Anmerkungen in Selen werden verwendet, um die nächste auszuführende Methode zu steuern. Testanmerkungen werden vor jeder Methode im Testcode definiert. Falls einer Methode keine Anmerkungen vorangestellt sind, wird diese Methode ignoriert und nicht als Teil des Testcodes ausgeführt. Um sie zu definieren, müssen Methoden einfach mit „ @Prüfung „. Schauen Sie sich zum Beispiel das folgende Code-Snippet an.

Paket testng import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.annotations.AfterClass import org.testng.annotations.AfterMethod import org.testng.annotations.BeforeClass import org.testng.annotations .BeforeMethod import org.testng.annotations.Test public class TestAnnotations {@Test public void myTestMethod () {System.out.println ('Inside method: - myTestMethod') WebDriver driver = new FirefoxDriver () driver.get ('http: //www.seleniumframework.com/Practiceform/ ') String title = driver.getTitle () System.out.println (title) driver.quit ()} @BeforeMethod public void beforeMethod () {System.out.println (' This Code wird vor der Methode ausgeführt: - myTestMethod ') System.setProperty (' webdriver.gecko.driver ',' C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe ')} @AfterMethod public void afterMethod () {System.out.println (' Dieses Stück Der Code wird nach der Methode ausgeführt: - myTestMethod ')} @BeforeClass public void beforeClass () {Syste m.out.println ('Dieser Code wird ausgeführt, bevor die Klasse ausgeführt wird')} @AfterClass public void afterClass () {System.out.println ('Dieser Code wird ausgeführt, nachdem die Klasse ausgeführt wurde')} }}

Im obigen Code hätten Sie bemerkt, dass ich keine Hauptmethode definiert habe. Ich habe jedoch 5 andere Methoden definiert. Sie sind 'myTestMethod', 'beforeMethod', 'afterMethod', 'beforeClass' und 'afterClass'. Beachten Sie auch die Reihenfolge der Definition von Methoden im Code, da diese nicht in derselben Reihenfolge ausgeführt werden.

Die Methode 'myTestMethod' ist mit Anmerkungen versehen @Prüfung und es ist die Hauptmethode oder der Hauptcode, der ausgeführt werden muss. Andere mit Anmerkungen versehene Methoden werden vor und nach der Ausführung dieser Methode ausgeführt. Da 'beforeMethod' mit kommentiert ist @BeforeMethod wird ausgeführt, bevor 'myTestMethod' ausgeführt wird. In ähnlicher Weise wird 'afterMethod' mit kommentiert @ AfterMethod und wird daher nach 'myTestMethod' ausgeführt.

'BeforeClass' ist jedoch mit Anmerkungen versehen @Vor dem Unterricht Dies bedeutet, dass es ausgeführt wird, noch bevor die Klasse selbst ausgeführt wird. Unser Klassenname hier ist TestAnnotationen Bevor die Klasse ausgeführt wird, wird der Code in 'beforeClass' ausgeführt. Ebenso wird 'afterClass' mit kommentiert @ AfterMethod und wird somit nach der Klasse ausgeführt TestAnnotationen ausgeführt wird.

Wenn Sie immer noch Verwirrung hinsichtlich der Ausführungsreihenfolge haben, hilft Ihnen das folgende Snippet auf jeden Fall.

1. BeforeSuite 2. BeforeTest 3. BeforeClass 4. BeforeMethod 5. Test 6. AfterMethod 7. AfterClass 8. AfterTest 9. AfterSuite

Die Ausgabe des obigen Codes lautet:

Dieser Code wird ausgeführt, bevor die Klasse ausgeführt wird. Dieser Code wird vor der Methode ausgeführt: - myTestMethod Innerhalb der Methode: - myTestMethod 1493192682118 geckodriver INFO Abhören von 127.0.0.1:13676 1493192682713 mozprofile :: profile INFO Verwenden des Profilpfads C: UsersVardhanAppDataLocalTemp ust_mprof .wGkcwvwXkl2y 1493192682729 geckodriver :: marionette INFO Browser C starten: Programme (x86) Mozilla Firefoxirefox.exe 1493192682729 geckodriver :: marionette INFO Herstellen einer Verbindung mit Marionette auf localhost: 59792 [GPU 6152] WARNUNG: c: /moz2_slave/m-rel-w32-00000000000000000000/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, Zeile 346 1493192688316 Marionette INFO Abhören von Port 59792 26. April 2017 13:14:49 org. openqa.selenium.remote.ProtocolHandshake createSession INFO: Erkannter Dialekt: W3C-JavaScript-Fehler: http://t.dtscout.com/i/?l=http%3A%2F%2Fwww.seleniumframework.com%2FPracticeform%2F&j=, Zeile 1: TypeError: document.getElementsByTagNa me (...) [0] ist undefiniertes Selenium Framework | Übungsformular 1493192695134 Marionette INFO Neue Verbindungen werden nicht mehr akzeptiert 26. April 2017 13:14:57 org.openqa.selenium.os.UnixProcess destroy SEVERE: Prozess mit PID 6724 kann nicht beendet werden Dieser Code wird nach der folgenden Methode ausgeführt: myTestMethod Dieser Code wird ausgeführt, nachdem die Klasse ausgeführt wurde. PASSED: myTestMethod ==================================== =========== Standardtest Testlauf: 1, Fehler: 0, Überspringen: 0 ======================== ======================= ========================== =================== Standard-Suite Gesamtzahl der durchgeführten Tests: 1, Fehler: 0, Überspringen: 0 =============== ===============================

Wie Sie der obigen Ausgabe entnehmen können, beträgt die Anzahl der ausgeführten Tests 1 und die Anzahl der fehlgeschlagenen Tests 0. Dies bedeutet, dass der Code erfolgreich ist. Auch die Reihenfolge der Ausführung von Methoden wird in der Reihenfolge seinichzuvor erwähnt.

Wenn Sie diesen Code auf Ihrem Computer ausführen, instanziiert Selenium WebDriver Ihren Firefox-Browser, navigiert zum Übungsformular von Selenium Framework, schließt die Browserinstanz und zeigt dieselbe Ausgabe wie oben in Ihrer Eclipse-IDE an.

Ich habe nur 5 verschiedene Anmerkungen in meinem Code verwendet. Es gibt jedoch noch viele weitere Anmerkungen, mit denen die nächste auszuführende Methode gesteuert werden kann. Die gesamte Liste der Anmerkungen wird im Abschnitt erläutertTabelleunten:

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

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

@BeforeTest - Die mit Anmerkungen versehene Methode @BeforeTest wird ausgeführt, bevor eine zu einer Klasse gehörende Testmethode ausgeführt wird.

@ AfterTest - Die mit Anmerkungen versehene Methode @ AfterTest wird ausgeführt, nachdem alle zu einer Klasse gehörenden Testmethoden ausgeführt wurden.

@BeforeGroup - Die mit Anmerkungen versehene Methode @BeforeGroup wird ausgeführt, bevor jede Gruppe ausgeführt wird.

@ AfterGroup - Die mit Anmerkungen versehene Methode @ AfterGroup wird ausgeführt, nachdem jede Gruppe ausgeführt wurde.

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

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

@BeforeMethod - Die mit Anmerkungen versehene Methode @BeforeMethod wird ausgeführt, bevor eine Testmethode innerhalb einer Klasse ausgeführt wird.

@ AfterMethod - Die mit Anmerkungen versehene Methode @ AfterMethod wird ausgeführt, nachdem jede Testmethode innerhalb einer Klasse ausgeführt wurde.

@Prüfung - Die mit Anmerkungen versehene Methode @Prüfung ist die Haupttestmethode im gesamten Programm. Andere mit Anmerkungen versehene Methoden werden um diese Methode herum ausgeführt.

Der Screenshot des TestNG-Berichts istunten vorhanden: -

Priorisierung

Wir haben darüber gesprochen, wie verschiedene Methoden definiert werden können, damit sie um das herum ausgeführt werden @Prüfung Methode. Aber was ist, wenn Sie mehr als eine haben? @Prüfung Methode und Sie möchten die Ausführungsreihenfolge zwischen ihnen definieren?

Bereichsoperator c ++

In diesem Fall können wirP.Priorisieren Sie sie, indem Sie den kommentierten Testfällen eine Nummer zuweisen. Je kleiner die Zahl, desto höher die Priorität. Bei der Definition der Testfälle kann die Priorität als Parameter zugewiesen werden. Wenn jedoch keine Priorität zugewiesen wird, werden die mit Anmerkungen versehenen Testmethoden gemäß der alphabetischen Reihenfolge der Tests ausgeführt. Schauen Sie sich die Parameter der Testanmerkungen im folgenden Abschnitt anCode.

@Test (Priorität = 2) public static void FirstTest () {system.out.println ('Dies ist der Testfall Nummer zwei wegen Priorität 2')} @Test (Priorität = 1) public static void SecondTest () { system.out.println ('Dies ist der Testfall Nummer eins wegen Priorität 1')} @Test public static void FinalTest () {system.out.println ('Dies ist der endgültige Testfall, weil es keine Priorität gibt') )}

Testfälle deaktivieren

Lassen Sie mich Ihnen etwas Interessanteres zeigen. Was ist, wenn Sie einen Code haben, der sich über eine Million Zeilen erstreckt und aus Hunderten von Testfällen besteht, und nur eine Testmethode deaktivieren möchten? Sie müssen stattdessen keinen Teil des Codes löschenkönnen wir diese Testmethode einfach deaktivieren.

Das Deaktivieren eines Testfalls erfolgt ebenfalls über Parameter. Wir können das einstellen aktiviert Attribut auf 'falsch'. Standardmäßig sind alle Testfälle aktiviert, daher müssen wir sie nicht jedes Mal definieren, wenn wir einen Test schreiben. Schauen Sie sich die Parameter der dritten und vierten Methode im folgenden Abschnitt anCode.

@Test (Priorität = 2, aktiviert = wahr) public static void FirstTest () {system.out.println ('Dies ist der Testfall Nummer zwei aufgrund der Priorität Nr. 2')} @Test (Priorität = 1, aktiviert = wahr) ) public static void SecondTest () {system.out.println ('Dies ist der Testfall Nummer eins wegen Priorität 1')} @Test (enabled = false) public static void SkippedTest () {system.out.println ( 'Dies ist der übersprungene Testfall, da dieser deaktiviert wurde')} @Test (enabled = True) public static void FinalTest () {system.out.println ('Dies ist der endgültige Testfall, der aktiviert ist und keine Priorität hat ')}

Methodenabhängigkeit

Wenn Sie nun eine Situation haben, in der ein Code nur ausgeführt werden soll, wenn er eine Bedingung erfüllt oder wenn eine bestimmte Methode erfolgreich ausgeführt wird, können wir dies mithilfe von verwenden abhängige Methode (). Dies ist im Grunde eine Bedingung der Methodenabhängigkeit, bei der eine Methode abhängig von einer anderen Methode ausgeführt wird. Wenn wir zusätzlich einstellen alwaysRun Wenn das Attribut true ist, wird die Methode unabhängig von der Fail / Pass-Bedingung der abhängigen Methode ausgeführt. Schauen Sie sich den Code im folgenden Code-Snippet an.

@Test public static void FirstTest () {system.out.println ('Dies ist der erste Testfall, der ausgeführt wird')} @Test (abhängigeOnMethods = {'FirstTest'}) public static void SecondTest () {system.out. println ('Dies ist der zweite Testfall, der ausgeführt wird. Dies ist eine abhängige Methode')} @Test (abhängige Methoden = {'Zweiter Test'}) public static void FinalTest () {system.out.println ('Dies ist der letzte Test Fall Es wird trotzdem ausgeführt. ')}

Dies bringt uns nun zu einem weiteren wichtigen Aspekt im TestAnmerkungen, die ist Gruppierung .

Gruppierung

Inzwischen müssen Sie wissen, dass der Code im Rahmen unseres Testfalls eine Reihe von Methoden enthält. Nehmen wir an, es gibt 100 Testfälle, aber wir möchten in unserem nächsten Test nur 20 Testfälle ausführen. Glaubst du, wir können das schaffen? Sicher können wir.

Wir können benutzen Gruppen Attribut für diesen Zweck. Wir können einer Reihe von Testfällen einen Gruppennamen zuweisen und später die Gruppe anstelle des gesamten Codes ausführen. Schauen Sie sich das folgende Code-Snippet an, um es zu verstehenwie man Gruppen erstellt.

@Test (groups = {'MyGroup'}) public static void FirstTest () {system.out.println ('Dies ist ein Teil der Gruppe: MyGroup')} @Test (groups = {'MyGroup'}) public static void SecondTest () {system.out.println ('Dies ist auch ein Teil der Gruppe: MyGroup')} @Test public static void ThirdTest () {system.out.println ('Dies ist jedoch kein Teil von Gruppe: MyGroup ')}

TestNG-Behauptungen

Dies bringt uns nun zum nächsten Thema in TestNG, nämlich den Behauptungen. Wie der Name schon sagt, können Assertions in Testmethoden verwendet werden, um die Pass / Fail-Bedingung eines Tests zu bestimmen. Basierend auf der True / False-Bedingung einer Anweisung werden die Tests bestanden / nicht bestanden.

In den folgenden Code habe ich 3 Testmethoden aufgenommen, wobei die erste und die dritte Methode eine Bestehensbedingung haben und die zweite Methode eine Fehlerbedingung hat. Überzeugen Sie sich selbst vom Code.

Paket testng import org.testng.annotations.Test import org.testng.annotations.BeforeMethod import org.openqa.selenium.WebDriver import org.openqa.selenium.firefox.FirefoxDriver import org.testng.Assert import org.testng.annotations.AfterMethod öffentliche Klasse Assertions {@BeforeMethod public void beforeMethod () {System.setProperty ('webdriver.gecko.driver', 'C: UsersVardhanworkspaceSeleniumProjectfilesgeckodriver.exe')} public boolean isEqual (int a, int b) {if (a == b ) {return true} else {return false}} @Test public void testEquality1 () {Assert.assertEquals (true, isEqual (10, 10)) System.out.println ('Dies ist eine Bestehensbedingung')} @Test public void testEquality2 () {Assert.assertEquals (true, isEqual (10, 11)) System.out.println ('Dies ist eine Fehlerbedingung')} @Test public void getTitle () {WebDriver driver = neuer FirefoxDriver () -Treiber. get ('https://www.gmail.com') String title = driver.getTitle () Assert.assertEquals (title, 'Gmail') System.out.println ('Dies ist wieder eine Bestehensbedingung')} }}

Wenn Sie sich den Bericht ansehen, der nach dieser Ausführung generiert wird, werden Sie feststellen, dass von den drei Tests einer fehlgeschlagen und zwei bestanden wurden. Ein weiterer wichtiger Punkt ist, dass, wenn eine Zusicherung fehlschlägt, andere Befehle / Codezeilen in diesem Test übersprungen werden. Nur wenn die Bestätigung erfolgreich ist, wird die nächste Codezeile in diesem Test ausgeführt. Überprüfen Sie die Ausgabe unten wo system.out.println wurde nur für die erste und dritte Methode ausgeführt.

1493277977348 geckodriver INFO Abhören von 127.0.0.1:47035 1493277977993 mozprofile :: profile INFO Verwenden des Profilpfads C: UsersVardhanAppDataLocalTemp ust_mozprofile.Z7X9uFdKODvi 1493277977994 geckodriver :: marionette INFO7) Herstellen einer Verbindung zu Marionette auf localhost: 50758 [GPU 6920] WARNUNG: Pipe-Fehler: 109: Datei c: / build / moz2_slave / m-rel-w32-00000000000000000000 / build / src / ipc / chrom / src / chrome / common / ipc_channel_win. cc, Zeile 346 1493277981742 Marionette INFO Abhören von Port 50758 27. April 2017 12:56:22 org.openqa.selenium.remote.ProtocolHandshake createSession INFO: Erkannter Dialekt: W3C Dies ist erneut eine Passbedingung Dies ist eine Passbedingung PASSED: getTitle PASSED: testEquality1 FAILED: testEquality2 java.lang.AssertionError: erwartet [false], aber gefunden [true] bei org.testng.Assert.fail (Assert.java:93) bei org.testng.Assert.failNotEquals (Assert.java: 512) bei org.testng.Assert.assertE qualsImpl (Assert.java:134) bei org.testng.Assert.assertEquals (Assert.java:115) bei org.testng.Assert.assertEquals (Assert.java:304) bei org.testng.Assert.assertEquals (Assert.java) : 314) bei testng.Assertions.testEquality2 (Assertions.java:38) bei sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) bei sun.reflect.NativeMethodAccessorImpl.invoke (Unbekannte Quelle) bei sun.reflect.DelegatingMethodAccessorIm Quelle) unter java.lang.reflect.Method.invoke (Unbekannte Quelle) unter org.testng.internal.MethodInvocationHelper.invokeMethod (MethodInvocationHelper.java:108) unter org.testng.internal.Invoker.invokeMethod (Invoker.java:661) unter org.testng.internal.Invoker.invokeTestMethod (Invoker.java:869) unter org.testng.internal.Invoker.invokeTestMethods (Invoker.java:1193) unter org.testng.internal.TestMethodWorker.invokeTestMethods (TestMethodWorkerj ) unter org.testng.internal.TestMethodWorker.run (TestMethodWorker.java:109) unter org.testng.TestRunner.privateRun (TestRunner.java:744) unter org.testng.TestRu nner.run (TestRunner.java:602) bei org.testng.SuiteRunner.runTest (SuiteRunner.java:380) bei org.testng.SuiteRunner.runSequential (SuiteRunner.java:375) bei org.testng.SuiteRunner.privateRun .java: 340) bei org.testng.SuiteRunner.run (SuiteRunner.java:289) bei org.testng.SuiteRunnerWorker.runSuite (SuiteRunnerWorker.java:52) bei org.testng.SuiteRunnerWorker.run (SuiteRunnerWorker.ava) bei org.testng.TestNG.runSuitesSequential (TestNG.java:1301) bei org.testng.TestNG.runSuitesLocally (TestNG.java:1226) bei org.testng.TestNG.runSuites (TestNG.java:1144) bei org.testng. TestNG.run (TestNG.java:1115) unter org.testng.remote.AbstractRemoteTestNG.run (AbstractRemoteTestNG.java:132) unter org.testng.remote.RemoteTestNG.initAndRun (RemoteTestNG.java:230) unter org.testng.remote .RemoteTestNG.main (RemoteTestNG.java:76) ======================================= ======== Standardtest Testlauf: 3, Fehler: 1, Überspringen: 0 ============================ ====================================================== ================ Standard-Suite Gesamtzahl der Testläufe: 3, Fehler: 1, Überspringen: 0 ========================================== ============

Das ist also das Ende der Konzepte für das Testfallmanagement. Wir haben noch ein Thema, und das ist die Berichterstellung. Die Berichterstellung ist das letzte Thema in diesem Selenium WebDriver-Lernprogramm, da Berichte erst nach all dem erstellt werden könnenTests werden ausgeführt.

Übergeben von Wert vs Übergeben von Referenz Java

Berichterstellung

Das Wichtigste, was Sie beachten müssen, ist, dass der Bericht nur über eine XML-Datei generiert wird. Dies bedeutet, ob es sich um eine Methode oder eine Klasse handelt oder um eine Gruppe, die Sie testen möchten. Alle müssen in der XML-Datei angegeben werden.

Sie können also zuerst einen neuen Ordner unter Ihrem Projekt erstellen und eine neue Datei in diesem Ordner erstellen. Geben Sie der Datei einen Namen und speichern Sie sie mit der Erweiterung .xml. Sie können den neuen Ordner und die neue Datei erstellen, indem Sie mit der rechten Maustaste auf den Paket-Explorer klicken. Nachdem Sie die Datei erstellt haben, wechseln Sie unten im Fenster zur Registerkarte Quelle und geben Sie die Konfigurationen ein, die im folgenden Snippet angegeben sind.

 

Die erste Zeile ist die Definition des XML-Dokumenttyps. Dies ist Standard und obligatorisch für alle Prüfberichte. Aber die anderen Zeilen sind ziemlich selbsterklärend. Ich habe die offenen Tags für Suite, Test, Klassen und Klasse verwendet. Das Klassen-Tag kann eine oder mehrere Klassen enthalten. Daher kann es verwendet werden, wenn ein Bericht erstellt werden soll, in dem mehrere Klassen getestet werden. Dies ist besonders praktisch für Entwickler, die einen langen Code testen möchten.

Wenn Sie zu unserem Bericht zurückkehren, können Sie jede Suite, jeden Test oder jede Klasse nach dem Öffnen dieser Tags benennen und daran denken, jedes von Ihnen geöffnete Tag zu schließen. Ich habe meinen Suite-Namen als angegeben TestNGs , Testname als Prüfung Anmerkungen und Klassenname als testng.TestAnnotations. Beachten Sie, dass der Klassenname das Format hat ' packagename.classname ’ .

Wenn Sie diese Datei als TestNG-Suite ausführen, wird die Ausführung gestartet und Sie erhalten detaillierte Testberichte. Sie erhalten die Testausgabe auf Ihrer Konsolenregisterkarte und das Ergebnis der Testsuite auf der nächsten Registerkarte. Der Bericht, den ich zur Ausführung meines Codes erstellt habe, lautetimder folgende Screenshot. Sie werden feststellen, dass diesmal ein Suite-Name, ein Testname, ein Klassenname sowie die Zeit für die Ausführung der einzelnen Elemente vorhanden sind.

Wenn Sie den HTML-Bericht (Indexbericht oder Emailable-Bericht) anzeigen möchten, können Sie zu gehen Testausgabe Ordner im Projektverzeichnis in Ihrem Arbeitsbereich. Durch Klicken darauf können Sie die Berichte auch zu einem späteren Zeitpunkt anzeigen. Unten sind ihre Screenshots.

Indexbericht : -

E-Mail-Bericht : -

Damit sind wir am Ende dieses Selenium WebDriver-Tutorial-Blogs angelangt. Es ist Zeit für Sie, Eclipse am Ende einzurichten, die verschiedenen Selenium-Pakete zu installieren, TestNG zu installieren und mit dem Schreiben Ihrer Testfälle zu beginnen.

Im folgenden Tutorial-Video zu Selenium WebDriver können Sie eine Demonstration der verschiedenen in diesem Blog erläuterten Konzepte sehen.

Selentraining | TestNG Framework für Selen | Edureka

Dieses Edureka Selenium-Schulungsvideo führt Sie durch die detaillierten Details von Selenium WebDriver. Dieses Selenium-Tutorial-Video ist ideal für Anfänger und Profis, die die Grundlagen von WebDriver-Befehlen auffrischen und erfahren möchten, wie TestNG mit Selenium zum Verwalten verschiedener Testfälle verwendet werden kann.

Wenn Sie Selen lernen und eine Karriere im Testbereich aufbauen möchten, schauen Sie sich unser interaktives Live-Online an Hier finden Sie rund um die Uhr Unterstützung, die Sie während Ihrer gesamten Lernphase begleitet.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren und wir werden uns bei Ihnen melden.