2017-07-18 26 views
0

我想用不同的参数值多次运行测试用例。是否有可能使用testng.xml和@Parameters注释?testng.xml中参数的多个值(不使用dataProvider)

例如,

<test name="Login Tests"> 
    <parameter name="one" /> 
    <parameter name="two" /> 
    <classes> 
     <class name="test.java.Login"/> 
    </classes> 
</test> 

所以,这应该运行测试两次,一次使用值1,然后使用值2。

是否有可能使用testng.xml和@Parameter? Q2302。另外,是否可以在套件中仅添加特定@Test的参数

例如,我的TestSuite有两个测试用例和一个testng.xml,与它相关联。

是否可以在testng.xml中为@Test添加@Parameters,因为我的测试都采用相同的参数。

+0

你能分享你的测试类呢? – juherr

回答

0

下面的示例应该基本上帮助回答你所有的问题。

如何基于通过<parameters>标签提供的值运行@Test多次

如何传递参数仅在特定的测试类

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; 
    } 
} 

在这里,我们解析通过使用

将通过 testng.xml文件传递的单个参数分成多个值

下面是第二个测试类的样子,它将接收测试类的特定参数。

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

最后,这里是如何的testng.xml会是什么样子:

<?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> 

下面是输出

... 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

再次感谢@Krishnan,你回答了我的两个问题..:D – iamvroon