TestNG参数化测试
2024-08-23 04:54:17
参数化有两种方法:
第一种:在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) { // ... }
最新文章
- 捷波朗 jabra BT3030 蓝牙耳机
- 尚学堂Spring视频教程(七):AOP XML
- PMP 项目管理过程组与知识领域
- ASP开发中服务器控件和普通控件的区别
- ubuntu10.04编译内核不显示grub菜单解决
- 基数排序详解以及java实现
- Table of Contents - Quartz Scheduler
- 如何循环遍历document.querySelectorAll()方法返回的结果
- [转载]js javascript 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
- openvas
- 【POJ2114】Boatherds 树分而治之
- SSMS2008插件开发(4)--自定义菜单
- CA认证
- iOS动画特效
- 将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
- Js 运行机制和Event Loop
- day 10函数二
- CAP与Base理论
- Tcp 编程 的时代 已经到来
- Python坑系列:可变对象与不可变对象
热门文章
- RK3288][Android6.0] 调试笔记 --- 关闭按键音后无法录音问题【转】
- Coolite Toolkit介绍
- luogu 1083 借教室
- 远程报错:这可能是由于credssp加密oracle修正
- bzoj3295 洛谷P3157、1393 动态逆序对——树套树
- 如何快速删除Linux下的svn隐藏文件及其他临时文件 (转载)
- bootstrap的modal弹窗,在多层窗口关闭时只会关闭自窗口,不再关闭父窗口
- bzoj 1741: [Usaco2005 nov]Asteroids 穿越小行星群【最大点覆盖】
- sublime text2 配置php本地环境时遇到的错误。
- 牛客网-3 网易编程题(1拓扑&;2二叉树的公共最近祖先&;3快排找第K大数)