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 ...
随机推荐
- C#开发规范总结(个人建议)
.NET开发编程规范 章程序的版式 版式虽然不会影响程序的功能,但会影响可读性.程序的版式追求清晰.美观,是程序风格的重要构成因素. 可以把程序的版式比喻为"书法".好的" ...
- Error generating Swagger server (Python Flask) from Swagger editor
1down votefavorite http://stackoverflow.com/questions/36416679/error-generating-swagger-server-pyt ...
- 【Java Saves!】Session 6:十六指星人
前面说,计算机用2个手指头数数,它内部的数是二进制,有0和1两个数字.也看到,对于人来说,二进制数too long, too inconvenient, sometimes troublesome.程 ...
- 在Eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误
在eclipse中配置Tomcat时,出现Cannot create a server using the selected type错误 原因:Tomcat被删除或者是重新安装,并且安装目录改变了. ...
- UGUI之Toggle使用
Toggle对象是一个开关.一般用于单选,可以用Toggle制作背包的选项卡 在场景中创建Toggle按钮.看看他有Toggle组件
- Docker源码编译
官方建议docker源码编译在docker容器内进行,因为官方提供的容器内已经继承了编译需要的环境,如果非要自己搭建编译环境也不是不可以,就是稍微有些繁琐.以下以1.8.2版本为例. 1.pull d ...
- Servlet获得Http请求,GET/POST
Servlet获得Http请求 Http请求信息格式 请求行(方法提交方式,URI,Http协议版本) GET方式提交:URI会包含查询字符串 POST方式提交:URI不会包含查询字符串 请求头 Ho ...
- 删除单链表倒数第n个节点
基本问题 如何删除单链表中的倒数第n个节点? 常规解法 先遍历一遍单链表,计算出单链表的长度,然后,从单链表头部删除指定的节点. 代码实现 /** * * Description: 删除单链表倒数第n ...
- 类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内。
错误的写法: if (this.GridView1.Rows.Count > 0) { string style = @"<style& ...
- iOS沙盒简单介绍
先简单介绍一下什么是沙盒:你可以简单理解成为一个目录,这个目录的改动不会对操作系统造成任何损失.(这里也有一点点介绍) 看看苹果的沙盒目录: 再附一张苹果官方的图 一个iOS app操作都是在自己的沙 ...