testNG @DataProvider参数化
Posted linxinmeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了testNG @DataProvider参数化相关的知识,希望对你有一定的参考价值。
testNG @DataProvider参数化是用java 代码写个用@DataProvider标记专门为测试方法提供参数的方法。该方法上用@DataProvider(name = "data")标记,需要被执行的测试用例方法需要用@Test()标识且在@Test中添加dataProvider 参数,如@Test(dataProvider = "data") 。
注意事项:@DataProvider中的name参数的值 必须和@Test中的dataProvider 参数的值一致。如果不一致 则无法调用到@DataProvider(name = "data")参数化方法中的参数。
@DataProvider参数化不止可以直接用于单个测试用例上,也可以用过方法名运用于多个测试用例上。
java代码如下
2 3 import org.testng.annotations.DataProvider; 4 import org.testng.annotations.Test; 5 6 import java.lang.reflect.Method; 7 8 public class DataProviderTest { 9 /** 10 * 直接运行在测试用例上的参数化 11 * 12 * @param name 13 * @param age 14 */ 15 @Test(dataProvider = "data") 16 public void testDataProvider(String name, int age) { 17 System.out.println("name=" + name + " age=" + age); 18 } 19 20 @DataProvider(name = "data") 21 public Object[][] ProviderData() { 22 Object[][] o = new Object[][]{ 23 {"zhangshan", 10}, 24 {"lisi", 20} 25 26 }; 27 return o; 28 } 29 30 31 @Test(dataProvider = "methodData") 32 public void test1(String name, int age) { 33 System.out.println("test11111方法" + "name=" + name + " age=" + age); 34 35 } 36 37 @Test(dataProvider = "methodData") 38 public void test2(String name, int age) { 39 System.out.println("test22222方法" + "name=" + name + " age=" + age); 40 41 } 42 43 /** 44 * DataProvider 运用在方法上,根据方法名进行参数化 45 * 46 * @param method 47 * @return 48 */ 49 @DataProvider(name = "methodData") 50 public Object[][] methodDataTest(Method method) { 51 Object[][] result = null; 52 if (method.getName().equals("test1")) { 53 result = new Object[][]{ 54 {"zhangshan", 10}, 55 {"lisi", 20} 56 }; 57 } else if (method.getName().equals("test2")) { 58 result = new Object[][]{ 59 {"wangwu", 10}, 60 {"molin", 20} 61 }; 62 } 63 return result; 64 } 65 }
运行结果如下
C:UsersAdministrator.IntelliJIdea2019.3system emp-testng-customsuite.xml test11111方法name=zhangshan age=10 test11111方法name=lisi age=20 test22222方法name=wangwu age=10 test22222方法name=molin age=20 name=zhangshan age=10 name=lisi age=20 =============================================== Default Suite Total tests run: 6, Failures: 0, Skips: 0 =============================================== Process finished with exit code 0
以上是关于testNG @DataProvider参数化的主要内容,如果未能解决你的问题,请参考以下文章
testng dataprovider接入msyql db初始化参数遇见的问题记录
构造函数上的 TestNG Factory、DataProvider 和 valargs 导致“java.lang.IllegalArgumentException:参数数量错误”2