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);
//print
//张三, 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之参数化的更多相关文章

  1. 使用 testng.xml 参数化

    1. 创建 Java 测试类 2. 添加测试方法 TestngParameterTest(String name, String age) 3. 为测试方法添加注释 @Parameters({&quo ...

  2. TestNg 9. 参数化测试-DataProvider参数化

    首先利用@DataProvider(name = "XXX")的属性,将name的值XXX 传递给 @Test(dataProvider = "XXX") 看以 ...

  3. TestNg 8.参数化测试 - xml

    有的时候,case需要参数,那么,传餐怎么传? 我的目录结构:首先建一个包叫做parameter,然后在resource里面新建一个parameter.xml文件 看以下代码: ParameterTe ...

  4. testNG之参数化测试

    @Parameters 测试的时候,测试的数据可以放在testng.xml文件中,被测试的方法通过@Parameters注解传递到测试方法中 parameterizedTest.java import ...

  5. testng XMl 参数化

    方法一: 方法二: 方法三: (1)如果测试的数据较多的情况下,很显然这种方式不适合,那么可以通过@DataProvider生成测试数据,通过@Test(dataProvider = "&q ...

  6. JUnit 4 与 TestNG 对比

    原文出处: 付学良的网志 原文出处2: http://www.importnew.com/16270.html -------------------------------------------- ...

  7. testNG中dataprovider使用的两种方式

    testNG的参数化测试有两种方式:xml和dataprovider.个人更喜欢dataprovider,因为我喜欢把测试数据放在数据库里. 一.返回类型是Iterator<Object[]&g ...

  8. JUnit 4 Vs TestNG比较

    JUnit 4和TestNG都是Java中非常受欢迎的单元测试框架.两种框架在功能上看起来非常相似. 哪一个更好? 在Java项目中应该使用哪个单元测试框架? 下面表中概括了JUnit 4和TestN ...

  9. 关于testNG和JUnit的对比

    关于选择JUnit还是选testNG,这几篇文章,建议读一读: API参考文档: Junit API文档:http://junit.org/junit4/javadoc/latest/index.ht ...

随机推荐

  1. [moka同学笔记]yii2.0缓存

    1.控制器中CacheDemoController.php <?php /** * Created by PhpStorm. * User: moka同学 * Date: 2016/06/29 ...

  2. jdbcTemplate 泛型 查询

    1. dao层方法使用泛型 public <T> List<T> findDistinctListByCondition(String str, Class<T> ...

  3. Maven初步搭建 (一)

    什么是maven? 也许很多人开始的时候跟我一样,在看了很多工程之后都不知道这个鸟东西到底是用来干嘛用的!:-D 一个东西之所以会出现是有其原因的,譬如Linus大神写git. Maven项目对象模型 ...

  4. mvc5入门示例博客(有惊喜)

    因为一直做pc客户端,总感觉要被社会淘汰一样,近来时间又有空闲,索性学习一下asp.net mvc开发,试着追赶互联网的潮流. 话说在软件开发中,最费力的还是界面上,太多细节要关注了,从今年起便努力将 ...

  5. hadoop2.2.0伪分布式搭建2--安装JDK

    2.1上传FileZilla 上传 https://filezilla-project.org/ 2.2解压jdk #创建文件夹 mkdir /usr/java #解压 tar -zxvf jdk-7 ...

  6. mysql awr v1.0.2发布

    改进说明: 1.新增监控Mysql实例通过web控制台http://ip:port/hosts.html进行,无需更改mysql-jdbc.properties配置文件和spring-servlet. ...

  7. Echarts图表控件使用总结1(Line,Bar)

    问题篇(详解):http://www.cnblogs.com/hanyinglong/p/4708337.html 1.前言 a.在系统开发过程中可能会使用到图表控件,一个好的图标控件可以使我们的网站 ...

  8. ASP.NET本质论第一章网站应用程序学习笔记3-对象化的Http

    在.NET环境下,万物皆对象,在HttpRuntime收到请求之后,立即将通过HttpWorkerRequest传递的参数进行分析和分解,创建方便用于网站应用程序处理用的对象,其中主要涉及到两个对象类 ...

  9. javascript中的defer是什么?

    今天看到stackoverflow上的这样一个问题(问题链接),大概是说用jQuery获取不到元素,这是我们刚开始接触javascript常常会碰到的问题,回答者列举了4中方法去解决获取不到元素的问题 ...

  10. 身份证号码15位转18位 C#实现

    [身份证最后一位神秘X的由来]身份证中的“冷知识”1999年的今天,<国务院关于实行公民身份号码制度的决定>被发布,当年10月1日实施.为什么有的有X?这位数是根据前17位计算出的校验码. ...