七、TestNG传递参数2

数据提供者本身可以接受两个类型的参数:Method和ITestContext

在创建@DataProvider方法是可以有四种格式如图:

第一种在上一篇中有学到

 1-Methode参数使用

@DataProvider 使用 java.lang.reflect.Method 作为第一个参数,TestNG 会把当前的测试方法当成参数传给第一个参数。

这样不同测@test测试方法可以调用不同的测试数据

package com.lc.testChuanCan02;

import java.lang.reflect.Method;

import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;



public class testNG10 {
    
  @DataProvider(name = "data1")
  public Object[][] testNG10_01(Method method) {
      Object[][] data01 = null;
      //method.getName()的值是@test测试方法的名称
      if(method.getName().equals("testNG10_02")) {
          data01 = new Object[][] {{"我是测试方法a","我是测试方法a"}};
      }else if(method.getName().equals("testNG10_03")) {
          data01 = new Object[][] {{"我是测试方法b","我是测试方法b"}};
    }
      
      return data01;
  }
  
  
  @Test(dataProvider = "data1")
  public void testNG10_03(String name1,String name2) {
      System.out.println("name1:"+name1+";name2:"+name2);
      
      
  }
}

2-ITestContext参数

给数据提供者提供ITestContext参数像是吧@test方的所在组提供给他;要配合txtng.xml文件使用。

下面是 @DataProvider 数据提供者如果 组名是functional-test( group.equals("functional-test")) 则随机生成10随机数给他测试方法,如果不是就提供2个随机数

package com.lc.testChuanCan02;

import java.util.List;
import java.util.Random;

import org.testng.ITestContext;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

public class testNG11 {
    
    @DataProvider
    public Object[][] randomIntegers(ITestContext context){
        
        String[] groups = context.getIncludedGroups();
        
        int size = 2 ; 
        
        for(String group : groups) {
            System.out.println("group=="+group);
            if(group.equals("functional-test")) {
                size = 10 ;
                break;
            }
        }
        
        Object[][] result = new Object[size][];
        Random r = new Random();
        
        for(int i = 0 ; i < size ; i++) {
            result[i] = new Object[] {new Integer(r.nextInt())};
        }
        return result;
        
    }
    
    
    @Test(dataProvider = "randomIntegers",groups = {"unit-test","functional-test"})
    public void random(Integer n) {
        System.out.println("n="+n);
    }
    
    
    
    
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="none">
  <test name="Test">
   <groups>
       <run>
           <include name="functional-test"></include>
       </run>
   </groups>
    <classes>
      <class name="com.lc.testChuanCan02.testNG11"/>
    </classes>
  </test> <!-- Test -->
</suite> <!-- Suite -->
原文地址:https://www.cnblogs.com/fanfancs/p/14109369.html