Veröffentlicht: September 6, 2020
TestNG DataProviders – Eine End-to-End-Übersicht und Demo
Cedric Beust erstellte 2003 das beliebte Testautomatisierungs-Framework TestNG mit der Programmiersprache Java. Es ähnelt JUnit und NUnit, behebt jedoch einige ihrer Mängel wie schlechte Konfigurationskontrolle, statische Programmiermodelle, fehlende Abhängigkeitstests usw. Es ist für die Abdeckung eines breiten Spektrums von Testprojekten konzipiert, einschließlich Funktions-, Unit- und integrierter Systemtests . TestNG bietet leistungsstarke Funktionen, die es Testern nicht nur ermöglichen, komplexe Testaufgaben durchzuführen, sondern auch die Funktionalität einfach zu nutzen machen. Während TestNG vor allem wegen seiner Anmerkungen beliebt ist, ist TestNG DataProviders eine weitere praktische Funktion, die datengesteuerte Tests einfach und effizient macht. Mit Datenparametrisierung, Datenlistenern, Datenanbietern, HTML-Berichten, Protokollen, Gruppierung von Testfällen sowie Funktionen zur Priorisierung und parallelen Tests ist TestNG bei den meisten Testern schnell zu einem Favoriten geworden.
Was sind TestNG-Datenanbieter?
Einer der wichtigen Aspekte von TestNG ist das datengesteuerte Testen. Die DataProviders-Funktion ist Teil des datengesteuerten Testens, bei dem sie einem Testfall in einer einzigen Ausführung unterschiedliche Werte bereitstellt. Das bedeutet, dass Sie einen einzelnen Testfall einmal ausführen können, aber eine Methode mit unterschiedlichen Datenwerten ausführen können. Sie können beispielsweise eine Registrierungsseite mit verschiedenen Eingaben testen, führen den Test jedoch nur einmal aus. Die TestNG-Datenanbieterfunktion übergibt alle diese Werte einzeln an den Testfall, sodass verschiedene Datensätze in einer einzigen Ausführung getestet werden.
Der Bedarf an TestNG-Datenanbietern
TestNG Parameters ist eine ähnliche Funktion, die Werte für Funktionen über eine XML-Datei bereitstellt. Mithilfe von Parametern können Sie mehrere Funktionen mit einem einzigen Datensatz oder eine einzelne Funktion mit mehreren Datensätzen ausführen. Die Herausforderung bei Parametern besteht jedoch darin, dass Sie den Testfall mit diesem Wert nur einmal ausführen können. In einem Standardtestprojekt müssen Sie Testfälle mit mehreren Werten ausführen. In einem solchen Fall müssen Sie den Testfall mehrmals mit unterschiedlichen Datensätzen ausführen. TestNG-Datenanbieter lösen diese Herausforderung, indem sie es Ihnen ermöglichen, den Testfall nur einmal auszuführen, aber unterschiedliche Datensätze zu verwenden. Es stellt über Annotationen angeordnete Datenwerte für Testmethoden bereit.
Wie funktioniert es?
Die TestNG DataProviders-Funktion verwendet die folgende Syntax. Zum Beispiel:
[java] @DataProvider (name = „ExperitestDataProvider“) public Object[][] ExperitestDPMethod() { neues Objekt zurückgeben [][] { Werte} } [/java]
Wenn Sie die Syntax überprüfen, werden TestNG-Anmerkungen verwendet. Hier wird nur ein Parameter verwendet, nämlich der Name. Dieser Parameter akzeptiert nur einen Zeichenfolgenwert als Namen des Datenanbieters. Sie haben ihre eigene Methode. Zum Beispiel: ExperitestDPMethod() hier. Standardmäßig verwendet TestNG den Namen der Methode als Namen des Datenanbieters, wenn dieser nicht angegeben ist.
Wenn Sie den Testfall ausführen, wird die Datenanbietermethode vom Datenanbieter aufgerufen, die eine Liste von 2D-Objekten zurückgibt, um datengesteuerte Tests für jeden Datensatz durchzuführen.
Installation
Hier sind die folgendenwing toErforderliche Tools zur Verwendung der TestNg DataProviders-Funktion:
- Javac
- Selen
- Eclipse-IDE
- TestNG
Schritt 1: Installieren Sie Java
Um TestNG auszuführen, benötigen Sie das Java Development Kit (JDK) 8.0 oder höher. Besuchen Sie diesen Link, um Java herunterzuladen und auf Ihrem Computer zu installieren.
https://www.oracle.com/in/java/technologies/javase-downloads.html
Java SE 14.0.2 ist die neueste Version. Laden Sie also die ausführbare Datei herunter und doppelklicken Sie, um die Software zu installieren.
Schritt 2: Umgebungsvariable konfigurieren
Nach der Installation von Java sollten Sie den Java-Pfad zum System angeben. Gehen Sie dazu wie folgt vor: Öffnen Sie System -> Erweiterte Systemeigenschaften -> Erweitert -> Umgebungsvariablen.

Geben Sie für „Benutzervariablen für Benutzer“ Folgendes ein:
- C:ProgrammdateienJavajdk-14.0.2
Geben Sie als Systemvariablenpfad den bin-Ordnerpfad ein:
- C:ProgrammdateienJavajdk-14.0.2bin
Jetzt ist Java einsatzbereit.
Schritt 3: Eclipse installieren
Zum Erstellen und Bearbeiten von Java-Skripten benötigen Sie eine Java-IDE. Eclipse und IntelliJ sind zwei beliebte IDEs für Java. Um Eclipse zu installieren, besuchen Sie den folgenden Link:
https://www.eclipse.org/downloads/
Die neueste Version ist Eclipse IDE 2020-06. Sobald die Software heruntergeladen ist, doppelklicken Sie darauf und installieren Sie die Software.

Es gibt mehrere Versionen von Eclipse. Wählen Sie also „Eclipse für Java-Entwickler“ und fahren Sie mit der Installation fort.

Sobald die Installation abgeschlossen ist, öffnen Sie die IDE. Jedes Mal, wenn Sie die IDE öffnen, werden Sie aufgefordert, einen Ordner für den Arbeitsbereich auszuwählen. Sie können mit dem Standardspeicherort fortfahren oder einen neuen auswählen.

Wenn Sie Eclipse zum ersten Mal öffnen, wird ein Begrüßungsbildschirm angezeigt. Jetzt ist die IDE einsatzbereit.

Schritt 4: Selenium installieren
Selenium ist ein beliebtes Open-Source-Framework zur Testautomatisierung, das in letzter Zeit sehr beliebt geworden ist. Besuchen Sie diesen Link, um die Selenium-Software herunterzuladen:
https://www.selenium.dev/downloads/
Laden Sie den Selenium Standalone Server herunter, der als JAR-Datei geliefert wird. Die neueste stabile Version ist 3.141.59. Sie müssen es nicht installieren. Speichern Sie es einfach auf Ihrem Computer.
Schritt 5: TestNG installieren
In früheren Versionen von Eclipse war TestNG im Eclipse Marketplace verfügbar, wo Sie einfach auf „Installieren“ klicken und TestNG zu Eclipse hinzufügen können. Bei der neuesten Version müssen Sie TestNG manuell herunterladen und als Bibliotheksdateien hinzufügen. Besuchen Sie diesen Link, um TestNG herunterzuladen:
https://dl.bintray.com/testng-team/testng-eclipse-release/
Klicken Sie auf den Link „Gezippt“, wählen Sie die neueste Version aus und speichern Sie die Dateien auf Ihrem Gerät.

Um TestNG zu Eclipse hinzuzufügen, öffnen Sie die IDE und klicken Sie auf „Neue Software installieren“. Klicken Sie im nächsten Bildschirm auf „Hinzufügen“ und fügen Sie die Dateien manuell hinzu.
Alternativ können Sie den TestNG-Link direkt dort bereitstellen, damit das Tool die Dateien automatisch herunterlädt.

Wählen Sie TestNG aus und klicken Sie auf Weiter. Akzeptieren Sie die Lizenzvereinbarung und klicken Sie auf Fertig stellen. Starten Sie Eclipse neu, um den TestNG-Konfigurationsvorgang abzuschließen.
Um zu überprüfen, ob TestNG ordnungsgemäß installiert ist, klicken Sie auf Strg+N und prüfen Sie, ob TestNG dort aufgeführt ist.

Jetzt ist TestNG einsatzbereit.
Erster Test mit TestNG DataProviders
Nachdem nun alle Tools installiert sind, führen wir den ersten Test durch, um zu sehen, wie TestNG DataProviders funktionieren.
Öffnen Sie die Eclipse-IDE und klicken Sie auf Neu -> Java-Projekt. Geben Sie dem Projekt einen Namen und klicken Sie auf „Weiter“.

Klicken Sie im nächsten Bildschirm auf „Bibliothek“ und dann auf „Externes JAR hinzufügen“.

Wählen Sie die JAR-Datei für den Selenium Standalone Server aus und klicken Sie auf „OK“. Selen wird Ihrem Projekt hinzugefügt.
Klicken Sie nun auf „Bibliothek hinzufügen“ und wählen Sie im nächsten Bildschirm TestNG aus, um TestNG zu Ihrem Projekt hinzuzufügen.

Selenium und TestNG werden Ihrem Projekt zusammen mit der Java-Laufzeitumgebung hinzugefügt.
Klicken Sie auf Neu -> Paket, um ein neues Paket zu erstellen.

Erstellen Sie in diesem Paket eine neue Klasse. Beispiel: ExperitestDataProviders.java
Fügen Sie nun diesen Code zur Klasse hinzu. Beachten Sie, dass es TestNG-Datenanbieter enthält.
[Java] Paket ExperitestDataProviders; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; öffentliche Klasse ExperitestTestNGDP { @DataProvider (name = „Experitest-DataProvider“) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest1“}, {“Experitest2“}, {“Experitest3“} , {“Experitest4”}, {“Experitest5”}}; } @Test (dataProvider = „Experitest-DataProvider“) public void ExperiTest (String val) { System.out.println(“Passed Parameter Is : ” + val); } } [/java]
- Hier haben wir einen Datenanbieter mit dem Namen „Experitest-DataProvider“ definiert und 5 Werte bereitgestellt (Experitest1, Experitest2 usw.).
- Während des Tests (@Test) haben wir den Datenanbieter angerufen.
- Wir haben eine Methode mit einem String-Parameter geschrieben und den Wert in „val“ gespeichert.
- Der Testfall nimmt den Zeichenfolgenwert und gibt ihn aus.
Wenn Sie diesen Testfall einmal ausführen, wird er fünfmal ausgeführt und jedes Mal wird ein Zeichenfolgenwert ausgegeben. Mit der DataProviders-Funktion haben wir also einen einzelnen Testfall mehrmals ausgeführt.

Dies ist die Ausgabe, die zeigt, dass 5 Tests ausgeführt und 5 Tests bestanden wurden.

Siehe Cloud-Demo testen
Hier ist eine weitere Testdemo, die in der SeeTest Cloud ausgeführt wird. Dieser Testfall öffnet einen Webbrowser in der Cloud und dann die Google-Website in diesem Browser. Anschließend gibt es „Experitest“ in das Suchfeld ein und durchsucht das Internet nach diesem Schlüsselwort. Anschließend wird die Google-Website erneut geöffnet und nach dem Schlüsselwort „SeeTest“ gesucht. Hier haben wir nur einen Testfall geschrieben, aber wir haben einen TestNG-Datenanbieter namens „Experitest-DataProvider“ definiert, der dem Testfall zwei Werte bereitstellt.
[java] @DataProvider (name = „Experitest-DataProvider“) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest“}, {“SeeTest“}}; } [/java]
Mit der Datenanbieterfunktion führen Sie hier also einen einzelnen Testfall zweimal aus.
Hier ist der Code:
[Java] Paket ExperitestDataProviders; import org.openqa.selenium.*; import org.openqa.selenium.remote.BrowserType; import org.openqa.selenium.remote.CapabilityType; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; java.net.URL importieren; öffentliche Klasse DPexample { private String host = „https://cloud.seetest.io“; private static final String ACCESS_KEY = „Geben Sie hier Ihren Zugangsschlüssel ein“; privater RemoteWebDriver-Treiber; private URL-URL; private DesiredCapabilities dc = new DesiredCapabilities(); @DataProvider (name = „Experitest-DataProvider“) public Object[][] ExperitestDPMethod(){ return new Object[][] {{“Experitest“}, {“SeeTest“}}; } @BeforeMethod public void setUp() löst eine Ausnahme aus { url = new URL(“https://cloud.seetest.io/wd/hub”); dc.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME); dc.setCapability(CapabilityType.PLATFORM, Platform.ANY); dc.setCapability(“accessKey”, ACCESS_KEY); dc.setCapability(“testName”, „Schnellstart-Chrome-Browser-Demo“); Treiber = neuer RemoteWebDriver(url, dc); } @Test (dataProvider = „Experitest-DataProvider“) public void ExperiTest (String val) { drivers.get(“https://www.google.com“); new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.name(“q”))); WebElement searchBar = drivers.findElement(By.name(“q”)); searchBar.click(); searchBar.sendKeys(val); searchBar.sendKeys(Keys.ENTER); } @AfterMethod public void tearDown() { System.out.println(“Report URL: „+ drivers.getCapabilities().getCapability(“reportUrl“)); Driver.quit(); } } [/java]
Hier ist das Ergebnis:

SeeTest ist ein umfassendes Web- und mobiles Testautomatisierungstool Damit können Sie Ihre Tests einfach über ein intuitives Dashboard ausführen und verwalten. Es bietet außerdem ein leistungsstarkes Berichtstool, das die Analyse Ihrer Tests erleichtert.
Hier der Bericht zum Demotest:

Hier die Details zum Test:

Zusammenfassung
DataProviders ist eine praktische Funktion für Tester, mit der sie einen einzelnen Testfall schreiben und ihn mehrmals mit vordefinierten Datensatzwerten ausführen können. Außerdem können Sie mehrere Methoden mit einem einzigen Datensatz ausführen. TestNG DataProviders machen datengesteuerte Tests einfach und unkompliziert. Mit der SeeTest-Plattform können Sie die TestNG DataProviders-Funktion vollständig nutzen, um Testfälle mit verschiedenen Datensätzen einfach auszuführen und gleichzeitig benutzerdefinierte Berichte zu erstellen.
Auch interessant
Appium und moderne mobile Frameworks: Automatisierungsherausforderungen verstehen
Die mobile Automatisierung hat sich im letzten Jahrzehnt deutlich weiterentwickelt, vor allem…
Der Mythos der Automatisierungsabhängigkeit: Migration von Quantum ohne Neuschreibungen
Während meiner Gespräche mit so vielen QA-Teams in Unternehmen…
Automatisierungsorientiertes App-Design-Framework & Best Practices
Ein Konzept, das Entwicklern zeigt, wie sie ihre Apps gestalten können…