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. 重新想象 Windows 8.1 Store Apps (84) - 图像处理的新特性, Share Contract 的新特性

    [源码下载] 重新想象 Windows 8.1 Store Apps (84) - 图像处理的新特性, Share Contract 的新特性 作者:webabcd 介绍重新想象 Windows 8. ...

  2. mysql启动报错:Starting MySQL...The server quit without updating PID file

    在mysql的data目录下误删除了mysql-bin.000001,mysql-bin.000002等文件,但是没有删除mysql-bin.index文件,此时启动mysql就会报错: Starti ...

  3. DDD开发框架ABP之导航菜单

    每一个网站都会有导航菜单(通常不止一个),ASP.NET Boilerplate(后文简称ABP)提供了一种创建和使用菜单的通用架构,利用架构我们可以方便的创建菜单并显示给用户.本文主要说明菜单的创建 ...

  4. c#泛型方法返回null的问题

    c#的泛型方法实现和java实现有点不同,在java中,所有的泛型方法运行时类型必须是引用类型,所以和非泛型一样可以返回null. 但是c#中有点不同,可以同时是值类型和引用类型,而值类型不能赋值nu ...

  5. jQuery pgwslideshow 空间相册

    一个响应式相册插件,你可以自定义幻灯片最大高度,滑动效果,是否显示控制按钮,自动轮播或间隔时间. pgwslideshow相册插件有以下特点    支持响应式    支持桌面和移动设备    代码简单 ...

  6. AloneJs.confirmbox() —— 确认框

    一.引用 <link href="https://cdn.suziyun.com/alonejs.min.css" rel="stylesheet" /& ...

  7. Get a developer license for windows store app

     获取你的开发者许可证 开发人员许可证是免费.如果您通过使用微软账户获取一个或多个开发人员的许可证,您必须续订他们每隔 30 天 当您运行或调试应用程序第一次在远程机器上或直接连接到您的开发计算机的设 ...

  8. seajs快速了解

    详情请点击原文     SeaJS是一个遵循CommonJS规范的JavaScript模块加载框架,可以实现JavaScript的模块化开发及加载机制.与jQuery等JavaScript框架不同,S ...

  9. Azure SQL Database 时间点还原(Point in Time Restore)功能

      微软中国TechNet 7 Oct 2014 9:17 PM Comments 0 Likes 原文地址:http://blogs.technet.com/b/azuretw/archive/20 ...

  10. PowerDesign设置列名与表名的大小写规则

    因为设计的Model是要用到Oracle 11g的,Oracle 11g的表名和列名默认是大写,在设计模型当中小写转大写一直很苦闹,发现PowerDedign可以直接设置,见下文: 打开Tools-- ...