Datengesteuertes Testen mit TestNG und Selenium

In diesem Text werden wir datengesteuerte Tests besprechen. Wir werden uns auf die @DataProvider-Annotation in TestNG beziehen, die wir verwenden können, um Daten an Testmethoden zu übergeben und einen datengesteuerten Testrahmen zu erstellen.
Inhaltsübersicht
Was ist datengesteuertes Testen?
Datengetriebenes Testen ist eine Testautomatisierungstechnik, bei der Testdaten und Testlogik entkoppelt sind. Die Testdaten steuern die Tests, indem sie iterativ in das Testskript geladen werden. Anstelle von fest kodierten Eingabedaten haben wir also jedes Mal neue Daten, wenn das Skript Daten aus der Testdatenquelle abruft.
Datengesteuertes Testen mit @DataProvider
Datengesteuerte Tests können von TestNG unter Verwendung der @DataProvider-Annotation durchgeführt werden. Die Methode mit der obigen @DataProvider-Annotation gibt ein 2D-Array des Objekts zurück, wobei die Zeilen die Anzahl der Iterationen und die Spalten die Anzahl der Eingabeparameter angeben, die bei jeder Iteration an die Testmethode übergeben werden.
Diese Anmerkung nimmt nur den Namen des Datenanbieters als Parameter entgegen, der verwendet wird, um den Datenanbieter mit der Testmethode zu verknüpfen. Wird kein Name angegeben, so gilt der Name der Methode des Datenlieferanten als Name des Datenlieferanten.
@DataProvider(name = „nameOfDataProvider“)
public Object[][] dataProviderMethodName() {
//Datengenerierung oder -abruflogik aus einer beliebigen externen Quelle
//Rückgabe eines 2d-Arrays von Objekten
return new Object[][] {{„k1“, „r1“,1},{„k2“, „r2“,2}};
}
Sobald die Methode des Datenanbieters erstellt ist, können wir die Testmethode mit dem Datenanbieter verknüpfen, indem wir das Attribut „dataProvider“ der @Test-Annotation verwenden. Um die DataProvider-Methode erfolgreich mit der Test-Methode zu verknüpfen, müssen die Anzahl und der Datentyp der Parameter der Test-Methode mit den von der DataProvider-Methode zurückgegebenen Parametern übereinstimmen.
@Test(dataProvider = „nameOfDataProvider“)
public void sampleTest(String testData1, String testData2, int testData3) {
System.out.println(testData1 + “ “ + testData2 + “ “ + testData3);
}
Codeschnipsel für datengesteuerte Tests in TestNG
@DataProvider(name = „dataProvider1“)
public Object[][] dataProviderMethod1() {
return new Object[][] {{„k1“, „r1“},{„k2“, „r2“},{„k3“, „r3“}};
}
//Der Testfall wird 3 Mal mit verschiedenen Werten ausgeführt
@Test(dataProvider = „dataProvider1“)
public void sampleTest(String str1, String str2) {
System.out.println(str1 + “ “ + str2);
}
Der obige „sampleTest“-Test wird dreimal mit verschiedenen Testdatensätzen ausgeführt – {„k1“, „r1“},{„k2“, „r2“},{„k3“, „r3“}, die von der dataProvider1-Methode dataProvider empfangen wurden.