Abhängigkeiten in TestNG

Abhängigkeiten in TestNG
MIN
23 März 2024

Die Regel lautet, dass jede Prüfmethode unabhängig von den anderen sein muss, d. h. j. das Ergebnis oder die Durchführung einer Prüfmethode darf die anderen Prüfmethoden nicht beeinflussen. Bei der Automatisierung kann es jedoch erforderlich sein, dass eine Testmethode von anderen abhängt.

Möglicherweise möchten wir Abhängigkeiten zwischen Testmethoden beibehalten, um Zeit zu sparen, oder für Szenarien, in denen der Aufruf zur Ausführung eines bestimmten Tests vom Ergebnis eines anderen Tests abhängt.

TestNG ist ein Test-Framework, das uns zwei Attribute zur Verfügung stellt – dependsOnMethod und dependsOnGroup innerhalb der @Test-Annotation, um Abhängigkeiten zwischen Tests zu erreichen. Lassen Sie uns nun diese Attribute untersuchen.

Inhaltsübersicht

DependsOnMethod

Mit dem Attribut „dependsOnMethod“ in der @Test-Annotation können wir den Namen der übergeordneten Testmethode angeben, von der der Test abhängen soll.

Einige Punkte, die Sie bei dependsOnMethod beachten sollten:

  • Bei der Ausführung einer ganzen Testklasse oder Testsuite wird die parentTest-Methode vor der dependentTest-Methode ausgeführt.
  • Wenn wir dependentTest selbst ausführen, wird die Methode parentTest ebenfalls vor dependentTest ausgeführt.
  • Wenn die Methode parentTest fehlschlägt, wird die Methode dependentTest nicht ausgeführt und als übersprungen markiert.

@Test(dependsOnMethods={„parentTest“})

Code-Schnipsel

Im folgenden Codeschnipsel haben wir zwei Testmethoden – parentTest() und dependentTest(). Die Methode dependentTest hängt von der Methode parentTest ab, indem sie das Attribut dependsOnMethods verwendet.

public class TutorialExample {

    @Test

    public void parentTest() { 

      System.out.println("Running parent test.");

    }

    @Test(dependsOnMethods={"parentTest"}) 

    public void dependentTest() { 

      System.out.println("Running dependent test.");

    } 

}

Abgerufen von

Wenn die Methode dependentTest() selbst ausgeführt wird, wird auch die Methode parentTest() vor der Methode dependentTest() ausgeführt. Dies geschieht im Interesse der Aufrechterhaltung der Abhängigkeiten.

Running parent test.

Running dependent test.

PASSED: parentTest

PASSED: dependentTest

===============================================

    Default test

    Tests run: 2, Failures: 0, Skips: 0

===============================================

DependsOnGroup

Das Attribut dependsOnGroup wird verwendet, um eine Testmethode von einer Sammlung von Tests abhängig zu machen, die zu einer bestimmten Gruppe gehören. Dadurch wird sichergestellt, dass der abhängige Test ausgeführt wird, nachdem alle Tests der übergeordneten Gruppe ausgeführt wurden.

Einige Punkte, die Sie sich bei DependsOnMethod merken sollten:

  • Bei der Ausführung einer ganzen Testklasse oder Testsuite werden die Tests der übergeordneten Gruppe vor den abhängigen Tests ausgeführt.
  • Wenn wir dependentTest selbst ausführen, werden alle Tests, die zur übergeordneten Gruppe gehören, vor dependentTest ausgeführt.
  • Wenn einer oder alle Tests der übergeordneten Gruppenmethode fehlschlagen, wird die Methode dependentTest nicht ausgeführt und als übersprungen markiert.

@Test(dependsOnGroups = „groupA“)

Code-Schnipsel

Im folgenden Codeschnipsel haben wir zwei Testmethoden – testMethod1ForGroupA() und testMethod2ForGroupA(), die zur Gruppe groupA gehören. Dann haben wir eine Methode dependentTest – dependentTestOnGroupA, die von den Methoden der GruppeA abhängig ist, indem wir das Attribut dependsOnGroups verwenden. Zu Demonstrationszwecken lassen wir die Methode testMethod2ForGroupA absichtlich scheitern.

public class TutorialExample {

    @Test(groups = "groupA")

    public void testMethod1ForGroupA() {

     System.out.println("Running test method1 of groupA");

    }

    @Test(groups = "groupA")

    public void testMethod2ForGroupA() {

     System.out.println("Running test method2 of groupA");

     Assert.fail();

    }

    @Test(dependsOnGroups = "groupA")

    public void dependentTestOnGroupA() {

     System.out.println("Running the dependent test");

    }

}

TestNG-Ergebnis

Wenn die Funktion dependentTestOnGroupA() selbst oder die gesamte Testklasse ausgeführt wird, können wir die folgende Ausgabe beobachten.

Hier können wir beobachten, dass TestNG versucht, alle 3 Tests auszuführen und aufgrund der Abhängigkeit zuerst testMethod1ForGroupA und testMethod2ForGroupA ausführt. Da testMethod2ForGroupA fehlgeschlagen ist, dependentTest, t. j. dependentTestOnGroupA, wird nicht ausgeführt und als übersprungen markiert.