TestNG参数化测试
参数化有两种方法:
第一种:在xml文件中声明
第二种:用@DataProvider注解
先介绍第一种方法:
ParameterTest类:用@Parameters({"name","age"}) 注解声明参数
package com.janson.parameter; import org.testng.annotations.Parameters;
import org.testng.annotations.Test; public class ParameterTest {
@Test
@Parameters({"name","age"})
public void paramTest(String name,int age) {
System.out.println("name:"+ name);
System.out.println("age:"+age);
}
}
在resources文件夹下新建parameter.xml文件:
注:<parameter>标签中的name需要与上面类中的@Parameters({"name","age"}) 一致
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="parameter">
<test name="parameterTest">
<parameter name="name" value="janson"/>
<parameter name="age" value="22"/>
<classes>
<class name="com.ucar.parameter.ParameterTest"/>
</classes>
</test>
</suite>
执行结果如下:
name:janson
age:22
第二种方法:
package com.janson.parameter; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import java.lang.reflect.Method; public class DataProviderTest { //演示两个参数
@Test(dataProvider = "twoParam")
public void dataProviderTest(String name,int age) {
System.out.println("name = "+name+";age = "+age);
} @DataProvider(name = "twoParam")
public Object[] provideData() {
Object[][] o = new Object[][] {
{"zhangsan",10},
{"lisi",11},
{"wangwu",12},
{"zhaoliu",13}
};
return o;
} //演示一个参数
@Test(dataProvider = "OneParam")
public void onlyOneDataProvider(int money) {
System.out.println("my Money is:"+ money+"万");
} @DataProvider(name="OneParam")
public Object[] oneProvideData() {
Object[] o = new Object[]{
100,200,1000,2000
};
return o;
} //演示多个参数
@Test(dataProvider = "manyParam")
public void manyDataProvider(String name,int age,String nation,int height) {
System.out.println("name:"+name+",age:"+age+",nation:"+nation+",height:"+height);
} @DataProvider(name = "manyParam")
public Object[][] manyProvideData() {
Object[][] o = new Object[][] {
{"A",20,"中国",180},
{"B",21,"USA",150},
{"C",22,"AUS",160},
{"D",23,"CAN",170}
};
return o;
} //演示根据不同方法传不同的参数
@Test(dataProvider = "methodData")
public void test1(String name,int age) {
System.out.println("test1方法: name="+name+",age="+age);
} @Test(dataProvider = "methodData")
public void test2(String name,int age) {
System.out.println("test2方法: name="+name+",age="+age);
} @DataProvider(name = "methodData")
public Object[][] provideMethodData(Method method) {
Object[][] result = null;
if(method.getName().equals("test1")) {
result = new Object[][] {
{"ZhangSan",30},
{"LiSi",31}
};
}else if(method.getName().equals("test2")) {
result = new Object[][] {
{"WangWu",40},
{"ZhaoLiu",41}
};
}
return result;
}
}
执行结果如下:
---两个参数---
name = zhangsan;age = 10
name = lisi;age = 11
name = wangwu;age = 12
name = zhaoliu;age = 13 ---多个参数---
name:A,age:20,nation:中国,height:180
name:B,age:21,nation:USA,height:150
name:C,age:22,nation:AUS,height:160
name:D,age:23,nation:CAN,height:170 ---一个参数---
my Money is:100万
my Money is:200万
my Money is:1000万
my Money is:2000万 ---根据不同方法传入不同参数---
test1方法: name=ZhangSan,age=30
test1方法: name=LiSi,age=31
test2方法: name=WangWu,age=40
test2方法: name=ZhaoLiu,age=41
补充:如果被引用数据源在另一个测试类中定义的,还需要指明其所在测试类,示例如下:
@Test(dataProvider = "create", dataProviderClass = StaticProvider.class) public void test(Integer n) { // ... }
TestNG参数化测试的更多相关文章
- testng入门教程10 TestNG参数化测试
在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大的不同数量的测试.参数测试,允许开发人员运行同样的测试,一遍又一遍使用不同的值. TestNG让你 ...
- TestNG参数化测试Spring应用Dubbo接口
一.配置dubbo的Bean文件: 配置spring-dubbo.xml文件: <dubbo:reference interface="com.datatrees.basisdata. ...
- TestNG参数化测试【转】
原文:http://www.yiibai.com/testng/20130916303.html 在TestNG的另一个有趣的功能是参数测试.在大多数情况下,你会遇到这样一个场景,业务逻辑需要一个巨大 ...
- TestNG参数化测试-数据提供程序 @DataProvider方式
在 testng.xml 中指定参数可能会有如下的不足: 1.如果你压根不用 testng.xml. 2.你需要传递复杂的参数,或者从Java中创建参数(复杂对象,对象从属性文件或者数据库中读取的et ...
- TestNG+Jenkins+Maven参数化测试dubbo接口
1.TestNG参数化测试用例: package com.tree.autotest.testcase.IUserBankSummaryService; import com.datatrees.fi ...
- Junit4参数化测试实现程序与用例数据分离
http://touchfu.iteye.com/blog/732930 现状:你是不是还在为自己的TestCase代码杂乱无章而苦恼,咎其根本还在于针对不同的用例,输入参数和mock信息的组装全部作 ...
- TestNG 搭建测试框架 自动化测试
框架层级及基本组件: 参考:https://www.cnblogs.com/jier888/p/8998724.html Java作为开发语言 Maven管理项目及Jar包 Testng作为测试 ...
- TestNG 参数化应用
一.第一种参数化方式(testng.xml配置参数) 1.新建ParameterDemo04类 2.拷贝类的路径 3.testng.xml配置类地址及参数 <?xml version=" ...
- Google C++单元测试框架GoogleTest---值参数化测试
值参数化测试允许您使用不同的参数测试代码,而无需编写同一测试的多个副本. 假设您为代码编写测试,然后意识到您的代码受到布尔参数的影响. TEST(MyCodeTest, TestFoo) { // A ...
随机推荐
- Codeforces Round #369 (Div. 2) 套题
A:模拟水题不说 #include <iostream> #include <string.h> #include <algorithm> #include < ...
- bzoj 2067 [ Poi 2004 ] SZN —— 二分
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2067 问题1:贪心考虑,应该是每个点的儿子尽量两两配对,如果剩一个就和自己合并向上,所以 a ...
- Kconfig SourceCode GDB调试 *****
1.GDB&makefile scripts->Makefile编译FLAGS -g HOSTCC = gcc HOSTCXX = g++ HOSTCFLAGS := HOSTCXXF ...
- 21. Ext中表格自适应高度
转自:https://blog.csdn.net/happy492/article/details/6401099 1. 下面的代码中width和height的初始值为tab的开始大小,当浏览器窗口变 ...
- Git简介(转载)
转自:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137396284551 ...
- FPGA基础入门篇(四) 边沿检测电路
FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...
- RabbitMQ学习之Work Queues(2)
目录: 轮询调度(Round-robin dispatching):即依次分配分配任务给worker. 消息答复(Message acknowledgement):在consumer处理完之后,进行消 ...
- SQL 事务篇和约束
数据库事务: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行 事务是恢复和并发控制的基本单位.事务应该具有4个属性 ...
- ASP.NET 之页面重定向和传值
在开发 ASP.NET 网站时,经常需要从一个网页重定向(导航)到另一个网页,同时希望能够将信息从源页传递到目标页.例如,如果你正在开发一个保险网站,需要用一个页面来收集基本信息(用户信息.保险产品信 ...
- C#模拟百度登录并到指定网站评论回帖(三)
上次说到怎么获取BAIDUID,这个相信很多人都能够拿到就不多说了,今天一连说两个,获取token和raskey 2.利用以上获得的cookie直接访问页面 https://passport.baid ...