TestNG之参数化
TestNG提供了两种参数化的方式,一种是通过XML,一种是通过代码实现,下面对这两种方式做介绍。
一、通过xml
/**
* <suite name="Suite" parallel="false">
* <!-- XML中增加一下两行 -->
* <parameter name="username" value="admin"/>
* <parameter name="password" value="123456"/>
*
* @Title: paraFromXML
* @Description: Parameters from testng.xml
* @param name
* @param pwd
* @return void
* @throws
*/
@Parameters({"username","password"})
@Test
public void paraFromXML(String name, String pwd) {
System.out.println(name+","+pwd);
//print admin,123456
}
二、通过DataProvider,返回值分别是Object[][]和Iterator<Object[]>
返回值是Object[][]
1.DataProvider提供者和调用者在同一个类
@DataProvider(name="testdp")
public Object[][] createData() {
return new Object[][] {
{ "张三", new Integer(36) },
{ "李四", new Integer(37)},
};
} /**
* @Title: paraFromDP
* @Description: Parameters from DataProvider in one class
* @param name
* @param it
* @return void
* @throws
*/
@Test(dataProvider="testdp")
public void paraFromDP(String name, Integer it) {
System.out.println(name+", "+it);
//张三, 36
//李四, 37
}
2.DataProvider提供者和调用者在不同的类
DataProvider调用类:
package test.testng; import org.testng.annotations.DataProvider;
import org.testng.annotations.Parameters;
import org.testng.annotations.Test; /**
* @author QiaoJiafei
* @version 创建时间:2015年12月11日 上午10:30:35
* 类说明
*/
public class TestParameters {
/**
* @Title: paraFromDPA
* @Description: Parameters from DataProvider in another class
* @param num
* @return void
* @throws
*/
@Test(dataProvider = "create", dataProviderClass = StaticProvider.class)
public void paraFromDPA(Integer num) {
System.out.println(num);
//print 42
} }
DataProvider提供类:
package test.testng; import org.testng.annotations.DataProvider; /**
* @author QiaoJiafei
* @version 创建时间:2015年12月11日 上午11:34:01
* 类说明
*/
public class StaticProvider {
@DataProvider(name = "create")
public static Object[][] createData() {
return new Object[][] {
new Object[] { new Integer(42) }
};
}
}
返回值是Iterator<Object[]>
3.1数据源提供类
package com.data; import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import org.apache.poi.hslf.model.Sheet;
import org.testng.annotations.DataProvider; /**
* @author QiaoJiafei
* @version 创建时间:2016年1月20日 上午11:58:26
* 类说明
*/
public class TestD {
@DataProvider(name="testdp")
public static Iterator<Object[]> createData() {
HashSet<Integer> set = new HashSet<Integer>();
set.add(Integer.valueOf(4));
set.add(Integer.valueOf(5)); HashSet<Object[]> so = new HashSet<Object[]>();
for(Integer intg:set){
so.add(new Object[]{intg});
} return so.iterator();
}
}
3.2 测试调用类
package com.data; import org.testng.annotations.Test; /**
* @author QiaoJiafei
* @version 创建时间:2016年1月20日 上午11:58:34
* 类说明
*/
public class TestT {
@Test(dataProvider="testdp",dataProviderClass = TestD.class)
public void login(Integer caseNum) {
System.out.println(caseNum);
}
}
输出:
4
5
三、dataProvider方法可接受 的参数:Method method, ITestContext context,如:
package com.data; import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import org.apache.poi.hslf.model.Sheet;
import org.testng.ITestContext;
import org.testng.annotations.DataProvider; /**
* @author QiaoJiafei
* @version 创建时间:2016年1月20日 上午11:58:26
* 类说明
*/
public class TestD {
@DataProvider(name="testdp")
public static Iterator<Object[]> createData(Method method, ITestContext context) {
System.out.println("-----------"+method.getName());
System.out.println("-----------"+context.getName());
HashSet<Integer> set = new HashSet<Integer>();
set.add(Integer.valueOf(4));
set.add(Integer.valueOf(5)); HashSet<Object[]> so = new HashSet<Object[]>();
for(Integer intg:set){
so.add(new Object[]{intg});
} return so.iterator();
}
}
注意:参数可以传其中一个,也可以两个一起传入
四.参数化后,在测试报告的显示如下图:
TestNG之参数化的更多相关文章
- 使用 testng.xml 参数化
1. 创建 Java 测试类 2. 添加测试方法 TestngParameterTest(String name, String age) 3. 为测试方法添加注释 @Parameters({&quo ...
- TestNg 9. 参数化测试-DataProvider参数化
首先利用@DataProvider(name = "XXX")的属性,将name的值XXX 传递给 @Test(dataProvider = "XXX") 看以 ...
- TestNg 8.参数化测试 - xml
有的时候,case需要参数,那么,传餐怎么传? 我的目录结构:首先建一个包叫做parameter,然后在resource里面新建一个parameter.xml文件 看以下代码: ParameterTe ...
- testNG之参数化测试
@Parameters 测试的时候,测试的数据可以放在testng.xml文件中,被测试的方法通过@Parameters注解传递到测试方法中 parameterizedTest.java import ...
- testng XMl 参数化
方法一: 方法二: 方法三: (1)如果测试的数据较多的情况下,很显然这种方式不适合,那么可以通过@DataProvider生成测试数据,通过@Test(dataProvider = "&q ...
- JUnit 4 与 TestNG 对比
原文出处: 付学良的网志 原文出处2: http://www.importnew.com/16270.html -------------------------------------------- ...
- testNG中dataprovider使用的两种方式
testNG的参数化测试有两种方式:xml和dataprovider.个人更喜欢dataprovider,因为我喜欢把测试数据放在数据库里. 一.返回类型是Iterator<Object[]&g ...
- JUnit 4 Vs TestNG比较
JUnit 4和TestNG都是Java中非常受欢迎的单元测试框架.两种框架在功能上看起来非常相似. 哪一个更好? 在Java项目中应该使用哪个单元测试框架? 下面表中概括了JUnit 4和TestN ...
- 关于testNG和JUnit的对比
关于选择JUnit还是选testNG,这几篇文章,建议读一读: API参考文档: Junit API文档:http://junit.org/junit4/javadoc/latest/index.ht ...
随机推荐
- 关于领域驱动设计(DDD)仓储的思考
为什么需要仓储呢?领域对象(一般是聚合根)的被创建出来后的到最后持久化到数据库都需要跟数据库打交道,这样我们就需要一个类似数据库访问层的东西来管理领域对象.那是不是我们就可以设计一个类似DAL层的东东 ...
- eclipse:File->New没有Android Application Project的解决办法
我的Eclipse版本是:Kepler Service Release 1,截图: 解决步骤: 1.单击Window,选择Customize Perspective,如图: 2.勾选Android A ...
- C# 循环语句 for循环
循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变.for(初始条件;循环条件;状态改变){ 循环体} 给出初始条件,先判断是否满足循环条件,如果不满足条件则跳过for语句,如 ...
- css3属性小结
/*border-radius*/ .demo2{ border:2px solid #a1a1a1; padding:10px 40px; background:#dddddd; width:300 ...
- 2004-输入一个百分制的成绩t,将其转换成对应的等级
,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E; 如果输入数据不在0~100范围内,请输出一行:“Score is error!”. 这题 ...
- WCF服务部署到IIS7.5
下面介绍如何把WCF服务部署到IIS: 为WCF服务创建.svc文件 我们知道,每一个ASP.NET Web服务都具有一个.asmx文本文件,客户端通过访问.asmx文件实现对相应Web服务的调用.与 ...
- Vue入门演示
工作中用了很久vue,但是都是我们这边前端经理封装好的组件,想要看到底部的原理还要从层层代码里面剥离出来,逻辑太复杂,还不如自己一点点整理一下,一步一步走下去. github地址:https://gi ...
- echarts 地图图
效果如下图: 1.下载echarts对应包: http://echarts.baidu.com/ 2.前端页面: <!DOCTYPE html> <html xmlns=" ...
- OAUTH 协议介绍
OAUTH 产生背景 随着互联网的深入发展,一些互联网巨头积累了海量的用户和数据.对于平台级软件厂商来说,用户的需求多种多样,变化万千 以一己之力予以充分满足,难免疲于本命.因此将数据以接口的形式开放 ...
- C语言可变参数函数实现原理
一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本 ...