2017-07-18 2 views
0

Ich möchte meinen Testfall mehrmals mit verschiedenen Parameterwerten ausführen. Ist es möglich, die Annotation testng.xml und @Parameters zu verwenden?Mehrere Werte für Parameter in der Datei testng.xml (ohne dataProvider)

Eg.

Also, sollte dies den Test zwei Mal, einmal mit Wert eins und dann mit Wert zwei ausführen.

Ist es möglich, testng.xml und @Parameter zu verwenden?

Q2. Ist es auch möglich, Parameter nur für einen bestimmten @ Test in einer Suite hinzuzufügen

Eg. Meine TestSuite verfügt über 2 Testfälle und eine dazugehörige testng.xml.

Ist es möglich, @Parameters in testng.xml nur für einen @ Test hinzuzufügen, da beide Tests dieselben Parameter verwenden.

+0

Könnten Sie Ihre Testklasse teilen? – juherr

Antwort

0

Die folgende Probe sollte grundsätzlich helfen, alle Ihre Fragen zu beantworten.

Wie ein @Test mehrere Male auf der Grundlage der Werte laufen über den Tag <parameters>

bereitgestellt

Wie Parameter zu übergeben, um nur eine bestimmte Testklasse

import org.testng.ITestContext; 
import org.testng.annotations.DataProvider; 
import org.testng.annotations.Test; 

public class FirstTestClass { 

    @Test(dataProvider = "getData") 
    public void testMethod(String param) { 
     System.out.println("Name = " + param); 
    } 

    @DataProvider 
    public Object[][] getData(ITestContext context) { 
     String parameter = context.getCurrentXmlTest().getLocalParameters().get("names"); 
     String[] names = parameter.split(","); 
     Object[][] returnValues = new Object[names.length][1]; 
     int index = 0; 
     for (Object[] each : returnValues) { 
      each[0] = names[index++].trim(); 
     } 
     return returnValues; 
    } 
} 

Hier parsen wir ein Einzelparameter, der über die Datei testng.xml an mehrere Werte übergeben wurde, indem sie unter Verwendung von ,

aufgeteilt wurden

So sieht die zweite Testklasse aus, die einen testklassenspezifischen Parameter erhalten soll.

public class SecondTestClass { 
    @Test 
    @Parameters({"age"}) 
    public void testMethod(int age) { 
     System.out.println("Age = " + age); 
    } 
} 

Schließlich ist hier, wie die testng.xml aussehen würde:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite name="45160355_Suite" parallel="false" verbose="2" > 
    <test name="45160355_test" verbose="2"> 
     <parameter name="names" value="Cedric, Julien"/> 
     <classes> 
      <class name="com.rationaleemotions.stackoverflow.qn45160355.FirstTestClass"> 
      </class> 
      <class name="com.rationaleemotions.stackoverflow.qn45160355.SecondTestClass"> 
       <parameter name="age" value="15"/> 
      </class> 
     </classes> 
    </test> 
</suite> 

Hier ist die Ausgabe

... TestNG 6.11 by Cédric Beust ([email protected]) 
... 
{names=Cedric, Julien} 
Name = Cedric 
Name = Julien 
Age = 15 

=============================================== 
45160355_Suite 
Total tests run: 3, Failures: 0, Skips: 0 
=============================================== 
+0

Danke nochmal @Krishnan, du hast meine beiden Fragen beantwortet ..: D – iamvroon

Verwandte Themen