TestNG中的数据源DataProvider概述
http://blog.csdn.net/taiyangdao/article/details/52141711
在上一篇文章中,我们知道带参数的测试方法,可以在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) {
- // ...
- }
TestNG中的数据源DataProvider概述的更多相关文章
- TestNG中的DataProvider返回Iterator<Object[]>的妙用
TestNG中使用DataProvider有个好处,就是: 1. 在执行用例的时候dataProvider迭代中的每组数据都是作为一个用例执行 2. 在测试数据有规律的情况下,免去了添加testXML ...
- 简单聊聊TestNG中的并发
前言 最近在做项目里的自动化测试工作,使用的是TestNG测试框架,主要涉及的测试类型有接口测试以及基于业务实际场景的场景化测试.由于涉及的场景大多都是大数据的作业开发及执行(如MapReduce.S ...
- 【转】TestNG中的并发(多线程)
优势 并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力 多线程方式拥有很大的优势: 1). 减少测试运行时间 如果测试集里包含了大量的用 ...
- 如何利用excel中的数据源制作数据地图
关于这个问题,制作数据地图的方法已不新奇,总体来说有这么几类方案: 一类方案:直接在excel里制作 优势:个人小数据量应用较为方便简单 缺点:需要熟悉VBA,且更强大的功能对VBA水平要求较高 1. ...
- java&testng中Assert
用testng中的assert做断言时,如果断言失败,则在当前方法中失败的语句后的语句将不会再执行: 如图: 看控制台输出语句:
- iOS中UITableView数据源刷新了,但tableview当中的cell没有刷新
你会不会遇到通过断点查看数据源模型的确刷新了,但是tableview没有刷新的情况,我遇到了,并通过下面的方法解决了,供大家参考! 在tableview中的数据源代理方法 p.p1 { margin: ...
- SQL Server 内存中OLTP内部机制概述(四)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
- SQL Server 内存中OLTP内部机制概述(三)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
- SQL Server 内存中OLTP内部机制概述(二)
----------------------------我是分割线------------------------------- 本文翻译自微软白皮书<SQL Server In-Memory ...
随机推荐
- 实测:Windows 8.1 (Windows Blue) 第三方桌面应用无法支持Retina屏,效果与Windows8.0似无差别。
首先我是在VMWARE下装的Windows Blue,是否改用BootCamp直接装就没问题我不知道,理论上应该无差别. 谣言里那个Windows Blue里的缩放功能可以完美支持Retina,但实际 ...
- linux定时任务的设置
1. 键入 crontab -e 编辑crontab服务文件 例如 文件内容如下: */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.s ...
- centos 配置 ssl服务
使用的是appach 2.4.10 版本 各个版本配置不同 1.首先修改httpd.conf 文件 appach 安装目录下的 conf文件夹中找到 #LoadModule socache_shmcb ...
- [转]struts1.2的action参数配置
转载地址:http://chenfeng0104.iteye.com/blog/796870 <struts-config> <form-beans> ...
- 阅读javascript高级程序设计
第一章 : javascript的简介: js的组成: 1.核心(ECMA) ECMA规定了js的 1,语法 2,保留字 3,关键字, 4,对象, 5,类型 6,操作符 7,语句 2.文档对象模型(D ...
- Intellij IDEA 配置最简单的maven-struts2环境的web项目
在idea里搭建maven项目 看着网上大神发的各种博客,然后自己搭建出来一个最简单的maven-strtus2项目,供初学者学习 新建project
- 【Treap】bzoj1588-HNOI2002营业额统计
一.题目 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司 ...
- [模板] SAP
int dfs(int x,int flow){ if(x==T) return flow; int tmp=res=0; for(int i=last[x];i;i=next[i]) if (d[x ...
- 蚁群算法简介(part3: 蚁群算法之更新信息素)
信息素的局部更新策略 每只蚂蚁在构造出一条从起点到终点的路径后,蚁群算法还要求根据路径的总长度来更新这条路径所包含的每条边上信息素的浓度(在旅行商问题中每座城市是图中的一个节点,城市两两间有一条边 ...
- python sys模块
sy模块主要用于:解析器及环境 命令行参数 python xx.py xx1 xx2注:xx.py: sys.argv[0] 脚本名称 xx1 sys.argv[1] 第1个参数退出程序 sys.ex ...