zoukankan      html  css  js  c++  java
  • 七、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 -->
  • 相关阅读:
    elemeng-ui中el-select的默认选择项问题
    element-ui的rules中正则表达式
    时间戳格式化
    array排序(按数组中对象的属性进行排序)
    vue-router路由传参
    flex属性flex-grow、flex-shrink、flex-basis
    sessionStorage、localStorage与cookie
    并发编程学习之线程可见性
    JVM系列文章合集
    JVM(1):Java 类的加载机制
  • 原文地址:https://www.cnblogs.com/fanfancs/p/14109369.html
Copyright © 2011-2022 走看看