Dataprovider & TestNG XML: Parametrisierung in Selenium(Beispiel)

Jun 9, 2021
admin

Wenn wir Software entwickeln, wünschen wir uns immer, dass sie mit einem anderen Datensatz anders funktioniert. Wenn es darum geht, dasselbe Stück Software zu testen, kann es nicht unfair sein, es nur mit einem Datensatz zu testen. Auch hier müssen wir überprüfen, ob unser System alle Kombinationen unterstützt, die wir erwarten. Dazu müssen wir unsere Testskripte parametrisieren. Hier kommt die Parametrisierung ins Bild.

Parametrisierung in Selenium

Parametrisierung in Selenium ist ein Prozess zur Parametrisierung der Testskripte, um mehrere Daten zur Laufzeit an die Anwendung zu übergeben. Es handelt sich um eine Ausführungsstrategie, bei der Testfälle automatisch mehrfach mit unterschiedlichen Werten ausgeführt werden. Das Konzept, das durch die Parametrisierung der Testskripte erreicht wird, nennt man Data Driven Testing.

In diesem Tutorial lernen Sie-

  • Typ der Parametrisierung in TestNG-
  • Parameter Annotation mit Testng.xml
  • Fehlersuche
  • Parameter mit Dataprovider
  • Aufruf von DataProvider aus verschiedenen Klassen
  • Typen von Parametern in Dataprovider

Art der Parametrisierung in TestNG-

Um die Parametrisierung zu verdeutlichen, werden wir die Parametrisierungsoptionen in einem der beliebtesten Frameworks für Selenium Webdriver – TestNG – durchgehen.

Es gibt zwei Möglichkeiten, mit denen wir die Parametrisierung in TestNG erreichen können

  1. Mit Hilfe der Parameter-Annotation und der TestNG-XML-Datei.

  2. Mit Hilfe der DataProvider-Annotation.

Parameter aus Testng.xml können Suite- oder Testebene sein

Parameter aus DataProvider können Methode und ITestContext als Parameter annehmen.

Lassen Sie uns diese im Detail betrachten –

Parameter Annotation in TestNG

Parameter Annotation in TestNG ist eine Methode, die verwendet wird, um Werte an die Testmethoden als Argumente mit Hilfe der .xml Datei zu übergeben. Es kann erforderlich sein, dass Benutzer die Werte während der Laufzeit an die Testmethoden übergeben. Die @Parameters Annotation Methode kann in jeder Methode mit @Test, @Before, @After oder @Factory Annotation verwendet werden.

Parameter-Annotation mit Testng.xml

Wählen Sie die Parametrisierung mit Hilfe von Annotationen, wenn Sie sich mit der Komplexität & der Anzahl der Eingabekombinationen weniger auseinandersetzen wollen.

Lassen Sie uns sehen, wie das funktioniert

Testszenario

Schritt 1) Starten Sie den Browser & gehen Sie zu Google.com

Schritt 2) Geben Sie ein Suchwort ein

Schritt 3) Überprüfen Sie, ob der eingegebene Wert mit dem von unseren Testdaten übereinstimmt

Schritt 4) Wiederholen Sie 2 & 3, bis alle Werte eingegeben sind

Testautor Suchschlüssel
Guru99 Indien
Krishna USA
Bhupesh China

Hier ist ein Beispiel, wie man es OHNE Parameter macht

Eine Studie, das obige Beispiel. Stellen Sie sich vor, wie komplex der Code wird, wenn wir dies für 3 Eingabekombinationen tun

Nun, lassen Sie uns dies mit TestNG parametrisieren

Um dies zu tun, müssen Sie

  • eine XML-Datei erstellen, in der die Parameter gespeichert werden
  • Fügen Sie im Test die Annotation @Parameters

Hier ist der vollständige Code

Test Level TestNG.xml

ParameterWithTestNGXML.java Datei

Anweisungen zum Ausführen des Skripts, wählen Sie die XML-Datei und führen Sie sie als Test NG Suite aus

Rechtsklick auf .xml-Datei -> Ausführen als -> Testng Suite (Hinweis: Suite)

Nun können Parameter auf 2 Ebenen definiert werden

  1. Suite-Ebene – Die Parameter innerhalb des <suite>-Tags der TestNG XML-Datei sind Parameter der Suite-Ebene.
  2. Testebene – Die Parameter innerhalb des <Test> Tags der TestNG XML Datei sind Parameter der Testebene.

Hier ist derselbe Test mit Parametern der Suite-Ebene

HINWEIS: Wenn der Parametername in der Suite-Ebene und der Testebene gleich ist, wird der Parameter der Testebene gegenüber der Suite-Ebene bevorzugt. In diesem Fall teilen sich alle Klassen innerhalb der Testebene den überschriebenen Parameter, und andere Klassen, die sich außerhalb der Testebene befinden, teilen sich den Suitenebenen-Parameter.

Fehlerbehebung

Problem Nr. 1 Der Parameterwert in testng.xml kann nicht in den entsprechenden Parameter der Testmethode eingefügt werden, was zu einem Fehler führt.

Betrachten Sie das folgende Beispiel

Hier ist das Attribut ‚author‘ gleich ‚Guru99‘, was eine Zeichenkette ist, und in der entsprechenden Testmethode wird ein ganzzahliger Wert erwartet, daher erhalten wir hier eine Ausnahme.

Problem Nr. 2 Ihre @Parameter haben keinen entsprechenden Wert in testing.xml.

Sie können diese Situation lösen, indem Sie die @optional-Annotation im entsprechenden Parameter in der Testmethode hinzufügen.

Problem Nr. 3: Sie möchten mehrere Werte desselben Parameters mit der Testng.xml testen

Die einfache Antwort ist, dass dies nicht möglich ist! Sie können mehrere verschiedene Parameter haben, aber jeder Parameter kann nur einen einzigen Wert haben. Dadurch wird verhindert, dass Werte im Skript fest codiert werden. Das macht den Code wiederverwendbar. Betrachten Sie es als Konfigurationsdateien für Ihr Skript. Wenn Sie mehrere Werte für einen Parameter verwenden möchten, verwenden Sie DataProvider

Data Provider in TestNG

Data Provider in TestNG ist eine Methode, die verwendet wird, wenn ein Benutzer komplexe Parameter übergeben muss. Komplexe Parameter müssen von Java aus erstellt werden, wie z.B. komplexe Objekte, Objekte aus Property-Dateien oder aus einer Datenbank können mit der Data Provider-Methode übergeben werden. Die Methode ist mit @DataProvider annotiert und gibt ein Array von Objekten zurück.

Parameter mit Dataprovider

@Parameters Annotation ist einfach, aber um mit mehreren Datensätzen zu testen, müssen wir Data Provider verwenden.

Um Tausende von Webformularen mit unserem Testframework auszufüllen, benötigen wir eine andere Methodik, die uns einen sehr großen Datensatz in einem einzigen Ausführungsablauf liefern kann.

Dieses datengesteuerte Konzept wird durch die @DataProvider-Annotation in TestNG erreicht.

Sie hat nur ein Attribut ’name‘. Wenn Sie das Attribut ’name‘ nicht angeben, ist der Name des DataProviders der gleiche wie der Name der entsprechenden Methode.

DataProvider gibt ein zweidimensionales JAVA-Objekt an die Testmethode zurück, und die Testmethode wird M-mal in einem Objekt-Array vom Typ M*N aufgerufen. Wenn der DataProvider z.B. ein Array von 2*3 Objekten zurückgibt, wird der entsprechende Testfall 2 mal mit jeweils 3 Parametern aufgerufen.

Komplettes Beispiel

DataProvider von einer anderen Klasse aus aufrufen

Standardmäßig befindet sich der DataProvider in derselben Klasse, in der sich die Testmethode befindet oder in seiner Basisklasse. Um ihn in einer anderen Klasse zu platzieren, müssen wir die DataProvider-Methode statisch machen und in der Testmethode müssen wir ein Attribut dataProviderClass in der @Test-Annotation hinzufügen.

Codebeispiel

TestClass ParameterDataproviderWithClassLevel.java

DataproviderClass.java

Typen von Parametern in Dataprovider

Es gibt zwei Arten von Parametern, die von der DataProvider-Methode unterstützt werden.

Methode- Wenn sich derselbe DataProvider bei verschiedenen Testmethoden unterschiedlich verhalten soll, verwenden Sie den Parameter Methode.

Im folgenden Beispiel

  • Wir prüfen, ob der Methodenname testMethodA ist.
  • Wenn ja, geben wir einen Wert zurück
  • Andernfalls geben wir einen anderen Wert zurück

Hier ist die Ausgabe

ITestContext- Es kann verwendet werden, um verschiedene Parameter für Testfälle basierend auf Gruppen zu erstellen.

In der Praxis können Sie ITestContext verwenden, um Parameterwerte auf der Grundlage von Testmethoden, Hosts und Konfigurationen des Tests zu variieren.

Im folgenden Codebeispiel

  • Wir haben 2 Gruppen A & B
  • Jede Testmethode ist einer Gruppe zugeordnet
  • Wenn der Wert der Gruppe A ist, wird ein bestimmter Datensatz zurückgegeben
  • Wenn der Wert der Gruppe B ist, wird ein anderer Datensatz zurückgegeben

Hinweis: Wenn Sie die Klasse testng direkt ausführen, ruft sie zuerst den Dataprovider auf, der keine Gruppeninformationen abrufen kann, da Gruppen nicht verfügbar sind. Wenn Sie diese Klasse jedoch über testng.xml aufrufen, stehen die Gruppeninformationen über ITestContext zur Verfügung. Verwenden Sie das folgende XML, um den Test aufzurufen

Summary:

  • Parametrisierung ist erforderlich, um Data Driven Testing zu erstellen.
  • TestNG unterstützt zwei Arten der Parametrisierung, die Verwendung von @Parameter+TestNG.xml und die Verwendung von@DataProvider
  • In @Parameter+TestNG.xml können Parameter auf Suite-Ebene und Testebene platziert werden. Wenn

    der gleiche Parametername an beiden Stellen deklariert wird, erhält der Parameter der Testebene den Vorzug vor dem Parameter der Suitebene.

  • Bei der Verwendung von @Parameter+TestNG.xml kann nur ein Wert auf einmal gesetzt werden, aber @DataProvider gibt ein 2D-Array von Object zurück.
  • Wenn DataProvider in einer anderen Klasse als der Klasse vorhanden ist, in der sich die Testmethode befindet, sollte DataProvider eine statische Methode sein.
  • Es gibt zwei Parameter, die von DataProvider unterstützt werden, nämlich Method und ITestContext.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.