参数化有两种方法:

第一种:在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) {

    // ...

  }

最新文章

  1. 捷波朗 jabra BT3030 蓝牙耳机
  2. 尚学堂Spring视频教程(七):AOP XML
  3. PMP 项目管理过程组与知识领域
  4. ASP开发中服务器控件和普通控件的区别
  5. ubuntu10.04编译内核不显示grub菜单解决
  6. 基数排序详解以及java实现
  7. Table of Contents - Quartz Scheduler
  8. 如何循环遍历document.querySelectorAll()方法返回的结果
  9. [转载]js javascript 判断字符串是否包含某字符串,String对象中查找子字符,indexOf
  10. openvas
  11. 【POJ2114】Boatherds 树分而治之
  12. SSMS2008插件开发(4)--自定义菜单
  13. CA认证
  14. iOS动画特效
  15. 将OrCAD Capture CIS的设计文件(.dsn)导入到PADS Logic VX.2.3
  16. Js 运行机制和Event Loop
  17. day 10函数二
  18. CAP与Base理论
  19. Tcp 编程 的时代 已经到来
  20. Python坑系列:可变对象与不可变对象

热门文章

  1. RK3288][Android6.0] 调试笔记 --- 关闭按键音后无法录音问题【转】
  2. Coolite Toolkit介绍
  3. luogu 1083 借教室
  4. 远程报错:这可能是由于credssp加密oracle修正
  5. bzoj3295 洛谷P3157、1393 动态逆序对——树套树
  6. 如何快速删除Linux下的svn隐藏文件及其他临时文件 (转载)
  7. bootstrap的modal弹窗,在多层窗口关闭时只会关闭自窗口,不再关闭父窗口
  8. bzoj 1741: [Usaco2005 nov]Asteroids 穿越小行星群【最大点覆盖】
  9. sublime text2 配置php本地环境时遇到的错误。
  10. 牛客网-3 网易编程题(1拓扑&amp;2二叉树的公共最近祖先&amp;3快排找第K大数)