TestNG中使用DataProvider有如下好处:

1. 在执行用例的时候,dataProvider迭代中的每组数据都是作为一个用例执行,实现数据驱动执行

2. 在测试数据有规律的情况下,免去了在XML中添加测试数据的烦恼,直接将测试数据放到dataProvider中即可

其中dataProvider作为数据提供者,只能返回Object[][]和Iterator<Object[]>类型的数据

当测试数据包含类对象来达到数据驱动,使用DataProvider的Iterator<Object[]>类型的数据返回就显得那么方便,看个例子。

testdata.txt

{    "name":"test1","url":"/v1/test","method":"post","body":{"platformCode": "10001","productCode": "10002","userId": "123456"}
};
{"name":"test2","url":"/v2/test","method":"post","body":{"platformCode": "10003","productCode": "10004","userId": "211234"}
}

  

TestCase.java文件

/** 接口测试中,接口的信息封装成一个对象*/
@Data
public class TestCase {
//  接口nameprivate String name;
//  接口urlprivate String url;
//      接口的请求方式private String method;
//      接口的请求体private Map<String,Object> body;}

测试数据源:

    /***  从外部txt文件中读取测试数据 * @param MethodName* @return*/@DataProvider(name="iterator")public Iterator<Object[]>  getMethodData1(Method method){String data=fileUtil.readFile();String[]  strArray=data.split(";");List<Object[]> testCases=new ArrayList<>();for(String str :strArray){    TestCase testcase = JSON.parseObject(str   ,TestCase.class);if(testcase.getName().equals(method.getName())){//查询接口的信息要封装成对象testCases.add(new Object[]{JSON.parseObject(str ,TestCase.class)});}}return testCases.iterator();}

 测试方法: 

根据测试方法执行对应的测试数据,如test1只运行其对应的测试数据。

      @Test(dataProvider="iterator")public void test1(TestCase testcase){System.out.println(testcase.toString());}

  

转载于:https://www.cnblogs.com/sunshine2017/p/11436227.html

testNG的DataProvider返回IteratorObject[]的妙用相关推荐

  1. testng使用DataProvider+Excel实现DDT

    DDT,即数据驱动测试 Data Driver Test,我曾经记录了一篇关于python的DDT框架(Excel+DDT数据驱动实例),那么java中的DDT是怎么样的呢?在java中,可以用tes ...

  2. 【转】React 16 中从 setState 返回 null 的妙用

    概述 在 React 16 中为了防止不必要的 DOM 更新,允许你决定是否让 .setState 更来新状态.在调用 .setState 时返回 null 将不再触发更新. 我们将通过重构一个 mo ...

  3. RF使用技巧--返回值的妙用

    作者:IT小样 在语言编程中我们直接用return语句可以妙用返回值,但在RF中使用起来有一定技巧.接下来就来讲解一下RF中如何使用返回值,返回值结合设置全局变量关键字,用起来简直所向披靡. 如何设置 ...

  4. TestNG参数– DataProvider和XML

    TestNG methods can have arguments also. There are two ways we can inject method arguments: TestNG方法也 ...

  5. linux命令返回值的妙用

    什么是返回值 在shell终端中,你所输入的一切命令其实都有返回值,而这个返回值默认保存在"$?"中,举例看一下 [root@localhost ~]# touch 123 [ro ...

  6. 在 React 16 中从 setState 返回 null 的妙用

    翻译:疯狂的技术宅 原文:blog.logrocket.com/returning-n- 未经允许严禁转载 概述 在 React 16 中为了防止不必要的 DOM 更新,允许你决定是否让 .setSt ...

  7. TestNG中的参数化– DataProvider和TestNG XML(带有示例)

    测试自动化,或所谓的自动化测试,并不像听起来那样容易. 必须考虑所有可能的用户交互的所有排列和组合,并且在此基础上,您将必须创建测试脚本以通过多种浏览器和OS组合来验证Web应用程序. 这就是参数化在 ...

  8. TestNG:在一个测试类中使用@DataProvider依次运行测试

    许多Java开发人员和自动化测试工程师在他们的工作中都使用TestNG作为测试框架. 我也不例外. 这是一个显而易见的选择,因为TestNG提供了非常强大的工具集,使处理各种测试变得更加容易. 为了证 ...

  9. TestNG 自动化测试入门教程--典型示例

    TestNG介绍 TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便 Java中已经有一个JUnit的测试框架了.  Tes ...

最新文章

  1. 移动端图形化报表界面设计_B端移动设计 | 客户RFM分析
  2. Open***异地机房互连以及负载均衡高可用解决方案
  3. exi 虚拟服务器,图文教程:如何在ESXi主机上部署VMware Tools 10
  4. nginx 返回动态Html,Nginx负载均衡 -Nginx动态更新upstream
  5. java面试没有全部答对_十道java基础面试题,你能保证全答对吗?
  6. 基于Flex的迷你工作流的设计与实现(序)
  7. C++STL笔记(十一):priority queue(带优先级的队列)详解
  8. c#.net利用RNGCryptoServiceProvider产生任意范围强随机数的办法
  9. 实战丨基于接口的银行系统自动化测试实践
  10. python中--snip--是什么意思
  11. 一文读懂authorized_keys和known_hosts
  12. Vue Antdv 上传组件(a-upload、a-upload-dragger)二次封装(DZMAntdvUpload)
  13. 全功能 Visual Studio 组件集 ComponentOne 2018V2发布,提供轻量级的 .NET BI 仪表板
  14. python初始画笔_Python自带Turtle画笔的原理
  15. java 画笔_JAVA画笔(paint)的使用
  16. SDU_week4_A - DDL 的恐惧(贪心+作业调度问题)
  17. Opencv 环境安装以及学习图像处理知识总结(附代码)(一)
  18. 标准网页两侧浮动广告代码 支持FF及IE
  19. CASIA情感数据库
  20. 拆卸组装计算机的注意事项,自己动手组装电脑要注意什么 小白装机必修功课...

热门文章

  1. VB与EXCEL的相互勾通
  2. Linux系统分析之启动流程
  3. 在中小型公司建立企业根证书颁发机构 (CA)
  4. OpenCV Laplacian算子
  5. 查看mysql数据库的主机_MySQL查看或显示数据库(SHOW DATABASES语句)
  6. Django学习笔记(一):第一个django程序
  7. java webproject中logback换配置文件的路径
  8. SQL编程:模糊表关联不求人 --- concat + like就能行
  9. fgets和scanf的区别
  10. jQuery Ajax 实例 全解析(转)