• TestNG中的数据源DataProvider概述


    在上一篇文章中,我们知道带参数的测试方法,可以在testng.xml配置文件中为其参数赋值。但是那只适用于初始值简单且确切的情况。

    对于初始值是复杂的对象,或者初始值是执行过程中生成的情况,就只能使用这里的数据源@DataProvider。

    使用TestNG中的数据源@DataProvider,所有的工作都在测试类中完成。具体过程分为两个步骤,第一步是定义数据源,第二步是在测试方法中引用数据源。

    1.在测试类中定义数据源

    在测试类中定义数据源就是提供一个生成数据源的方法,该方法通过@DataProvider声明一个唯一的名称。另外,生成数据源的方法必须返回Object[][]类型(或者Iterator<Object[]>),即复杂对象的数组。示例如下:

    @DataProvider(name = "test1")  
    public Object[][] createData1() {  
     return new Object[][] {  
       { "Cedric", new Integer(36) },  
       { "Anne", new Integer(37)},  
     };  
    } 

    该数据源的名称为test1,可供测试方法直接引用。

    该数据源中的复杂对象包含两个属性,第一个属性是字符串类型,第二个属性是整型。那么在引用该数据源的测试方法中,就应该有两个对应类型的参数。

    补充:如果引用数据源的测试方法是在另一个测试类中定义的,为了保证数据源的就绪,生成数据源的方法必须定义为static的,示例如下:

    @DataProvider(name = "create")  
    public static Object[][] createData() {  
      return new Object[][] {  
        new Object[] { new Integer(42) }  
      };  
    }  

    2.在测试方法中引用数据源

    在测试方法中通过数据源的名称引用数据源,示例如下:

    @Test(dataProvider = "test1")  
    public void verifyData1(String n1, Integer n2) {  
     System.out.println(n1 + " " + n2);  
    } 

    补充:如果被引用数据源的在另一个测试类中定义的,还需要指明其所在测试类,示例如下:

    @Test(dataProvider = "create", dataProviderClass = StaticProvider.class)  
    public void test(Integer n) {  
      // ...  
    }  
  • 相关阅读:
    动态规划算法——最长公共子序列问题(java实现)
    算法java实现--动态规划--电路布线问题
    动态规划经典问题Java实现
    使用WebRTC搭建前端视频聊天室
    Safari支不支持HTML5录音? 现在浏览器中最好的解决方案是WebRTC下的 navigator.getUserMedia API。
    java 实现websocket的两种方式
    媒体文件audio 转 base64 编码 (利用 FileReader & Audio 对象)
    jquery 图片文件转base64 显示
    blob转base64位 base64位转blob
    websocket消息推送实现
  • 原文地址:https://www.cnblogs.com/amy7758/p/6650296.html
Copyright © 2020-2023  润新知