参数化测试
1、@Parameters
使用注解@Parameters:描述如何将参数传递给@Test方法。
1、创建ParamterTest类
脚本代码:
package com.demo.paramter;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParamterTest {
@Parameters({ "username", "password" })
@Test
public void paramTest1(String username, String password) {
System.out.println("username = " + username + "; password = " + password);
}
}
2、创建testng_paramter.xml文件
文件内容:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="test">
<test name="Test">
<parameter name="username" value="admin" />
<parameter name="password" value="123456" />
<classes>
<class name="com.demo.paramter.ParamterTest" />
</classes>
</test>
</suite>
3、执行脚本(testng_paramter.xml鼠标右键Run As--->TestNG Suite)。
4、执行结果:
控制台打印结果信息:
testng_paramter.xml文件里的参数传递给ParamterTest类里的paramTest1方法。
TestNG结果报告:
2、@DataProvider
使用注解@DataProvider:标记一种方法来提供测试方法的数据。注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。
1、创建DataProviderTest类
脚本代码:
package com.demo.paramter;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.lang.reflect.Method;
public class DataProviderTest {
@Test(dataProvider = "data")
public void testDataProvider(String username, String password) {
System.out.println("username = " + username + "; password = " + password);
}
@DataProvider(name = "data")
public Object[][] dataProvider() {
return new Object[][] { { "admin", "123456" }, { "root", "root" }, { "administrator", "1234567890" } };
}
@Test(dataProvider = "methodData")
public void testCase1(String username, String password) {
System.out.println("testCase1:username = " + username + "; password = " + password);
}
@Test(dataProvider = "methodData")
public void testCase2(String username, String password) {
System.out.println("testCase2:username = " + username + "; password = " + password);
}
@DataProvider(name = "methodData")
public Object[][] methodDataProvider(Method method) {
Object[][] result = null;
if (method.getName().equals("testCase1")) {
result = new Object[][] { { "admin1", "123456" }, { "root1", "root123" } };
} else if (method.getName().equals("testCase2")) {
result = new Object[][] { { "admin2", "567890" }, { "root2", "root456" } };
}
return result;
}
}
2、执行脚本(DataProviderTest鼠标右键Run As--->TestNG Test)。
3、执行结果:
控制台打印结果信息:
testDataProvider方法数据由@DataProvider名为data来提供。
testCase1方法数据由@DataProvider名为methodData来提供。
testCase2方法数据由@DataProvider名为methodData来提供。
@DataProvider里有N个参数列表,则调用的方法按顺序执行N次。
TestNG结果报告:
本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!