标签:文件 sys 一个 out ann rgb 测试数据 apr ring
通常情况,测试方法中是不需要传入参数的,但不代表不能。
如果针对一个方法,需要传入多组数据进行测试,或者测试数据不想写在测试方法里,都需要用到参数化。
第一种:xml配置文件中存储数据
1.测试方法上加@Parameters({"name","age"})注解及参数
2.xml配置文件中<classes>标签中添加<parameter>标签,其中的name对应变量名,value对应变量的值。
package com.coke.testng.parameter; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class ParameterTest { @Test @Parameters({"name","age"}) public void paramTest1(String name,int age){ System.out.println("name = "+name+", age = "+age); } }
<?xml version="1.0" encoding="UTF-8" ?> <suite name="parameterTest"> <test name="parameter"> <classes> <parameter name="name" value="zhangsan"/> <parameter name="age" value="20"/> <class name="com.coke.testng.parameter.ParameterTest"/> </classes> </test> </suite>
第二种:测试类中写DataProvider
1.测试方法上加@Test(dataProvider = "data");
2.返回Object[][]方法上加@DataProvider(name = "data"),与测试方法里的保持一致。
package com.coke.testng.parameter; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.lang.reflect.Method; public class DataProviderTest { @Test(dataProvider = "data") public void testDataProviderTest(String name,int age){ System.out.println("name="+name+";age="+age); } @DataProvider(name = "data") public Object[][] providerData(){ Object[][] objects = new Object[][]{ {"zhangsan",20}, {"lisi",21}, {"wangwu",22} }; return objects; } }
还有一种不常用的情况,根据不同的方法名,判断传入不同的参数。
区别在于返回Object[][]方法里,加入形参(Method method);
用 method.getName().equals("test1") 匹配测试方法名,从而传入不同的数据。
package com.coke.testng.parameter; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.lang.reflect.Method; public class DataProviderTest { @Test(dataProvider = "methodData") public void test1(String name,int age){ System.out.println("test1方法 的 name="+name+";age="+age); } @Test(dataProvider = "methodData") public void test2(String name,int age){ System.out.println("test2方法 的 name="+name+";age="+age); } @DataProvider(name = "methodData") public Object[][] MethodData(Method method) { Object[][] result = null; if (method.getName().equals("test1")) { result = new Object[][]{ {"zhangsan",20}, {"lisi",21} }; } else if (method.getName().equals("test2")) { result = new Object[][]{ {"wangwu",22}, {"zhuliu",23} }; } return result; } }
【java测试-testng4】参数化的两种形式:xml和DataProvider
标签:文件 sys 一个 out ann rgb 测试数据 apr ring
原文地址:https://www.cnblogs.com/yunren/p/14260882.html