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 DataProvider?

构造函数上的 TestNG Factory、DataProvider 和 valargs 导致“java.lang.IllegalArgumentException:参数数量错误”2

TestNG中DataProvider的用法

testNg dataprovider实现读取数据库测试数据

接口测试(java+testng+ant+jenkins)第六篇testng 二