testNG的常用用法Parameters,DataProvider
一、Parameters
在testng.xml中配置 里面的name值对应写到 Parameters中然后,在test中输出这个参数名,就可以得到配置中的value值
实例:
<suite name="Suite" parallel="classes" thread-count="3">
<test verbose="2" preserve-order="true" name="TestDebug">
<parameter name="Name" value="asdfsfa" />
<classes>
<class name="com.seventhDay.TestNG1" />
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
@Parameters("Name")
@Test
public void parametersTest(String Name){
System.out.println(Name);
}
结果:
asdfsfa
二、DataProvider
a.对象数据:
@Test(dataProvider = "testdb")
public void parameterIntTest(Class clzz, String str,String line3, int no) {
System.out.println(Thread.currentThread().getName());
System.out.println("Parameterized Number is : " + clzz);
System.out.println("Parameterized Number is : " + str);
System.out.println("Parameterized Number is : " + line3);
System.out.println("Parameterized Number is : " + no);
}
@DataProvider(name = "testdb",parallel = false
)
public Object[][] parameterIntTestProvider() {
return new Object[][]{
{Vector.class, "test1","a",1},
{String.class, "test2","b",2},
{Integer.class, "test3","c",3},
{String.class, "test3","c",4},
{String.class, "test3","c",4}
};
}
结果:
[RemoteTestNG] detected TestNG version 7.0.0
main
Parameterized Number is : class java.util.Vector
Parameterized Number is : test1
Parameterized Number is : a
Parameterized Number is : 1
main
Parameterized Number is : class java.lang.String
Parameterized Number is : test2
Parameterized Number is : b
Parameterized Number is : 2
main
Parameterized Number is : class java.lang.Integer
Parameterized Number is : test3
Parameterized Number is : c
Parameterized Number is : 3
main
Parameterized Number is : class java.lang.String
Parameterized Number is : test3
Parameterized Number is : c
Parameterized Number is : 4
main
Parameterized Number is : class java.lang.String
Parameterized Number is : test3
Parameterized Number is : c
Parameterized Number is : 4
PASSED: parameterIntTest(class java.util.Vector, "test1", "a", 1)
PASSED: parameterIntTest(class java.lang.String, "test2", "b", 2)
PASSED: parameterIntTest(class java.lang.Integer, "test3", "c", 3)
PASSED: parameterIntTest(class java.lang.String, "test3", "c", 4)
PASSED: parameterIntTest(class java.lang.String, "test3", "c", 4)
b.迭代器:
public class TestBean {
private String name;
private String msg;
private String line3;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
public class TestBean2 {
private String name;
private String msg;
private String line3;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
public class DataProviderTest2 {
@Test(dataProvider = "mytest")
public void parameterIntTest(TestBean bean,TestBean2 bean2) {
System.out.println(Thread.currentThread().getName()+" bean "+bean);
System.out.println("Parameterized Number is : " + bean.getName());
System.out.println("Parameterized Number is : " + bean2.getMsg());
}
@DataProvider(name = "mytest", parallel = true)
public Iterator<Object[]> parameterIntTestProvider() {
List<Object[]> dataProvider = new ArrayList<Object[]>();
for(int i=0;i<2;i++){
TestBean bean = new TestBean();
bean.setName("testname"+i);
bean.setMsg("--"+i);
TestBean2 bean2 = new TestBean2();
dataProvider.add(new Object[] { bean,bean2});
}
return dataProvider.iterator();
}
}
结果:
[RemoteTestNG] detected TestNG version 7.0.0
TestNG-PoolService-0 bean testng.TestBean@56d87a9
TestNG-PoolService-1 bean testng.TestBean@232aa3b3
Parameterized Number is : testname1
Parameterized Number is : testname0
Parameterized Number is : null
Parameterized Number is : null
PASSED: parameterIntTest(testng.TestBean@56d87a9, testng.TestBean2@18a96ba9)
PASSED: parameterIntTest(testng.TestBean@232aa3b3, testng.TestBean2@411e52d7)