2016-05-30 13 views
0

Hintergrund: Ich führe Tests mit TestNG aus und ich habe eine Klasse mit @Test versehen, die eine Nummer oder ID generiert, wenn Sie so wollen, und diese Nummer ist der Eingabewert meines zweiten Tests. Ist es möglich, Werte zwischen TestNG Tests zu übergeben?Werte zwischen TestNG-Tests übergeben

+2

Tests sollten eigenständig sein, so dass dies wie eine schlechte Übung für mich scheint. Wenn Sie Ihren Code veröffentlichen, wäre es einfacher zu helfen. – michaelsnowden

+0

Der Testfall ist Ende-zu-Ende, also möchte ich die Fallnummer, die ich im ersten Testfall erstellt habe, bis zum Abschluss verfolgen. –

+0

Sie müssten die Handhabung selbst vornehmen - erstellen Sie eine Variable, die für alle Tests verwendet werden soll. Wenn du parallel arbeitest, vergewissere dich, dass du das tust, indem du threadlocal benutzt, um deine Variable hinein zu bringen. –

Antwort

0

Sie sollten einen Test erstellen, der den gesamten Fall behandelt. Tests können nicht voneinander abhängen, es gilt als schlechte Übung. Wenn Sie die Reihenfolge der Tests verwenden, kann die Ausführung in verschiedenen Umgebungen unterschiedlich sein.

0

Schlechte Praxis oder nicht, kann es durch einfache Verwendung von Klassenfeldern erreicht werden. Stellen Sie nur sicher, dass Ihre Fälle in vorhersehbarer Reihenfolge ausgeführt werden (z. B. mit @Test (Priorität) oder dependsOn TestNG-Funktion).

0

Sicher. Zum Beispiel, wenn Sie zwei Tests haben, die verwandt sind, können Sie die Werte von einem Test zu einem anderen über Testkontextattribute übergeben:

@Test 
public void test1(ITestContext context) { //Will be injected by testNG 
    /* Do the test here */ 
    context.setAttribute("myOwnAttribute", "someTestResult"); 
} 

@Test(dependsOnMethods = "test1") 
public void test2(ITestContext context) { //Will be injected by testNG 
    String prevResult = (String) context.getAttribute("myOwnAttribute"); 
}