课程目录:
相同的测试脚本使用不同的测试数据执行,并完全分离了测试数据和测试行为,这样的设计模式叫做数据驱动。
TestNG实现测试驱动的两个关键注解:
将数据写在另一个类里
package com.csj2018.testdata;
import org.testng.annotations.DataProvider;
public class TestData {
@DataProvider(name="car")
public static Object[][] createData(){
return new Object[][]{
{"明朝","王阳明"}
};
}
}
测试脚本
package com.csj2018;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderDemo {
/*
* 类中提供测试数据
*/
@DataProvider(name="car")
public Object[][] createData(){
return new Object[][]{
{"大众","帕萨特"},
};
}
@Test(dataProvider = "car")
public void testData1(String brand,String middleClassAuto){
System.out.println("@dataProvider 从本类中读取测试数据");
System.out.println("品牌:"+brand+"\t中级车:"+middleClassAuto);
}
@Test(dataProvider = "car",dataProviderClass = com.csj2018.testdata.TestData.class)
public void testData2(String dynasty,String famous){
System.out.println("@dataProvider 从数据类中读取测试数据");
System.out.println("朝代:"+dynasty+"\t人物:"+famous);
}
}
package com.csj2018.testdata;
import org.testng.annotations.DataProvider;
import java.lang.reflect.Method;
public class TestData {
@DataProvider(name="car")
public Object[][] createData(Method m){
if(m.getName().equals("testData2")){
return new Object[][]{
{"西汉","霍去病"}
};
}
return new Object[][]{
{"明朝","王阳明"}
};
}
}
package com.csj2018;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class Demo1 {
@Test(dataProvider = "car",dataProviderClass = com.csj2018.testdata.TestData.class)
public void testData1(String dynasty,String famous){
System.out.println("@dataProvider 从数据类中读取测试数据");
System.out.println("朝代:"+dynasty+"\t人物:"+famous);
}
@Test(dataProvider = "car",dataProviderClass = com.csj2018.testdata.TestData.class)
public void testData2(String dynasty,String famous){
System.out.println("@dataProvider 从数据类中读取测试数据");
System.out.println("朝代:"+dynasty+"\t人物:"+famous);
}
}
创建测试用例
package com.csj2018;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class TestParameters {
@Test
@Parameters({"province","city"})
public void testParameters(String province, String city){
System.out.println("@Parameters");
System.out.println("省份:"+province+"\t城市:"+city);
}
}
新建xml文件,用于传递参数,并执行用例
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite" verbose="1">
<test verbose="2" preserve-order="true" name="lesson1"><!--测试名称-->
<classes>
<class name="com.csj2018.TestParameters"><!--测试类的路径-->
<parameter name="province" value="浙江" />
<parameter name="city" value="杭州" />
<methods>
<include name="testParameters"/>
</methods>
</class>
</classes>
</test>
</suite>
原文:https://www.cnblogs.com/csj2018/p/11677023.html