Java接口自动化之TestNG单元测试框架(三)

ITester软件测试小栈

共 3843字,需浏览 8分钟

 ·

2021-03-14 08:39








上一篇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
===============================================


(完)



ITester测试开发小栈(ID:TestDevZone),技术人茶余饭后的充电宝,每周上午11:30更新文章。从精进的软件测试到硬核的测试开发、从精细的前端开发到缜密的后端开发,前沿互联网资讯传送,宝藏IT资源分享,热门招聘发布。

喜欢记得星标置顶,让我们一起守护成长


浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报