上一篇 Java 接口自动化系列文章: Java接口自动化之TestNG单元测试框架(二) ,主要 介绍 testng.xml 配置文件控制 测试用例 的运行 。
以下主要介绍在TestNg中参数传递的 两 种方式。
01
TestNg传递参数的两种方式
TestNG提供了2种传递参数的方式:
- testng.xml文件获取参数。
- @DataProvider传递一些比较复杂的参数。
02
XML文件配置
优点: 使得代码和测试数据分离,方便维护。
缺点:若是 需要传递复杂的参数,或者从Java中创建参数(复杂对象,对象从属性文件或者数据库中读取) ,这种方法就再也不适用。
思路:
- 定义xml配置文件,在文件中申明参数。
- 使用 @Parameters 注解从测试配置 xml 文件获取参数。
①在 maven 项目的 resources 目录下新建文件parameter.xml ,申明参数。
<?xml version="1.0" encoding="UTF-8"?>
<suite name="parameterTest">
<test name="testParameter">
<classes>
<class name="ParameterTest"/>
<parameter name="name" value="vivi" />
<parameter name="age" value="18" />
</classes>
</test>
</suite>
②创建测试类:ParameterTest。
import org.testng.annotations.Parameters;
import org.testng.annotations.Test;
public class ParameterTest {
@Test
@Parameters({"name","age"})
public void testDemo(String name,int age){
System.out.println("姓名:"+name+","+"年龄: "+age);
}
}
③右键运行parameter.xml,效果如下:
姓名:vivi,年龄: 18
===============================================
parameterTest
Total tests run: 1, Failures: 0, Skips: 0
===============================================
03
DataProvider传送参数
如果需要传递一些复杂的参数,靠xml文件就不太适合了。很多场景是,测试数据需要从java对象或数据库中获取,这时候,我们就需要通过DataProvider方式来提供测试数据。
思路如下:
1)首先定义一个数据源的方法,通过@DataProvider注解来标识。
- 数据源,是方法提供数据,返回一个 二维数组 。
- @DataProvider(name = “data”) 通过该注解来标识这个数据源,name为数据源的名称。
- @return 返回一个二维数组。
2)然后定义一个测试方法,通过@Test(dataProvider=”data”)属性来获取数据。
通过dataProvider来获取数据,执行的次数会根据数据源提供数据的数量。
新建测试类:DataProviderTest。
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
public class DataProviderTest {
@DataProvider(name = "data")
public Object[][] provideData() {
Object[][] data = new Object[][]{
{"vivi", 18},
{"coco", 16},
{"tom", 20}
};
return data;
}
@Test(dataProvider = "data")
public void testDataProvider(String name,int age) {
System.out.println("姓名:" + name + "," + "年龄: " + age);
}
}
注意:被@Test标注的方法通过dataProvider属性指明其数据提供者,这个名字必须与@DataProvider(name=”…”)中的名字一致。
运行之后,结果为:
姓名:vivi,年龄: 18
姓名:coco,年龄: 16
姓名:tom,年龄: 20
===============================================
Default Suite
Total tests run: 3, Failures: 0, Skips: 0
===============================================
(完)
我是CoCo,计算机科学与技术专业,深漂大厂互联网民工(女),坐标深圳。5年工作经验,3年持续输出技术文。
ITester软件测试小栈(ID:ITestingA)号主,Boss直聘好文社区签约作者,腾讯云社区优质创作者。专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。
喜欢记得星标置顶,让我们一起守护成长