http://blog.csdn.net/taiyangdao/article/details/52141711

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

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

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

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

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

  1. @DataProvider(name = "test1")
  2. public Object[][] createData1() {
  3. return new Object[][] {
  4. { "Cedric", new Integer(36) },
  5. { "Anne", new Integer(37)},
  6. };
  7. }

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

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

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

  1. @DataProvider(name = "create")
  2. public static Object[][] createData() {
  3. return new Object[][] {
  4. new Object[] { new Integer(42) }
  5. };
  6. }

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

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

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

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

    1. @Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
    2. public void test(Integer n) {
    3. // ...
    4. }

TestNG中的数据源DataProvider概述的更多相关文章

  1. TestNG中的DataProvider返回Iterator<Object[]>的妙用

    TestNG中使用DataProvider有个好处,就是: 1. 在执行用例的时候dataProvider迭代中的每组数据都是作为一个用例执行 2. 在测试数据有规律的情况下,免去了添加testXML ...

  2. 简单聊聊TestNG中的并发

    前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...

  3. 【转】TestNG中的并发(多线程)

    优势 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力 多线程方式拥有很大的优势: 1). 减少测试运行时间 如果测试集里包含了大量的用 ...

  4. 如何利用excel中的数据源制作数据地图

    关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...

  5. java&testng中Assert

    用testng中的assert做断言时,如果断言失败,则在当前方法中失败的语句后的语句将不会再执行: 如图: 看控制台输出语句:

  6. iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新

    你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...

  7. SQL Server 内存中OLTP内部机制概述(四)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  8. SQL Server 内存中OLTP内部机制概述(三)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

  9. SQL Server 内存中OLTP内部机制概述(二)

    ----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...

随机推荐

  1. swift基础:第二部分:函数和闭包

    今天本来想利用上午的时间本来打算将swift基础部分学习完的,不巧的是,后台来和我讨论用户评价的接口,讨论过后,商讨出一种可行的方案,十几分钟时间过去了,我拿到将接口介入到已经完成的页面中,完美,终于 ...

  2. 802.1X基础

    这是一个认证规范.使用EAPOL协议在客户端与认证端交互. EAPOL协议:Extensible Authentication Protocol over LAN. 假设三个实体: 客户端:PC 认证 ...

  3. 归并排序算法 java 实现

    归并排序算法 java 实现 可视化对比十多种排序算法(C#版) [直观学习排序算法] 视觉直观感受若干常用排序算法 算法概念 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di ...

  4. cocopods 安装与使用

    iOS 最新版 CocoaPods 的安装流程 1.移除现有Ruby默认源 $gem sources --remove https://rubygems.org/ 2.使用新的源 $gem sourc ...

  5. C#控制台项目更改运行文件

    这个是极光推送的C# demo,里面有几个文件,要先后运行.这是第一次遇见,所以一下子找不到北,摸索了好一会儿才知会.于是做了这面一个记录. 右击鼠标,查看属性弹出这个这面,然后选择要启动的对象.保存 ...

  6. Linux下运行Jmeter测试所遇问题汇总

    一.安装及启动Jmeter  本文原创,专为光荣之路公众号所有,欢迎转发,但转发请务必写出处!  0.下载及安装 下载地址及Linux命令 wget http://mirrors.cnnic.cn/a ...

  7. [已解决] git 重命名文件夹

    git mv oldfolder newfolder 原文地址:http://www.cnblogs.com/gifisan/p/5980608.html

  8. php webservice

    发请求客户端client.php <?php //需要到php.ini文件中打开extension=php_soap.dll try{ //wsdl方式调用web service //wsdl方 ...

  9. SVN批处理

    前言 我们在项目开发中,使用的版本管理工具有svn git等.这里介绍一下用 bat命令操作svn .这样会给我们带来很大的方便. bat命令 Python等大家一定要掌握哈,会给你带来很多的方便.其 ...

  10. POJ-1028 Web Navigation 和TOJ 1196. Web Navigation

    Standard web browsers contain features to move backward and forward among the pages recently visited ...