TestNG框架教程三:参数化与数据驱动

一、@Parameters传参

Parameters一般用于比较简单的参数,只能一个参数一个值,不能多值或集合。

1.在testng.xml文件中定义参数列表

2.Parameters注解在测试方法上指定参数列表,然后在测试方法中声明对应的形参,形参与参数列表一一对应

使用testng.xml执行,结果如下:

TestNG框架教程三:参数化与数据驱动

二、@DataProvider传参

DataProvider适用于复杂的多组数据的情况。@DataProvider注解的函数返回的必须是Object[][]

TestNG框架教程三:参数化与数据驱动

使用testng.xml执行,结果如下:

TestNG框架教程三:参数化与数据驱动

三、读取文件传参

思路就是:

1.读取数据源文件,可以是EXCEL,XML,YAML,甚至可以是TXT文本。

2.使用@DataProvider组装数据,做数据驱动。

这里主要介绍几种读取文件做数据驱动方式。

1.XML做数据源

用DOM4J解析XML,ParserXml.java文件

先发布文章吧。DOM4j的xml语法等我先看看。^ ^!

2.CSV做数据源

user.csv文件内容:

TestNG框架教程三:参数化与数据驱动

使用BufferedReader读取文件,这种对于csv、excel、txt这种简单格式的文件都很好用

package com.util.tools;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.ArrayList;

public class util_readfile {
    public static void main(String[] args) throws IOException {
       // 测试读取文件方法
    	Object[][] s=getTestData("user.csv");
    	for(Object[] x:s) {
        	System.out.println("姓名:"+x[0]+",电话:"+x[1]+",地址:"+x[2]);
    	}
    }
	public static Object[][] getTestData(String filePath) throws IOException {
        ArrayList<Object[]> records = new ArrayList<Object[]>();
        String record;
        // 设定UTF-8字符编码集,使用带缓冲区的字符输入流BufferedReader 读取文件内容;
        BufferedReader file = new BufferedReader(new InputStreamReader(new FileInputStream(filePath), "UTF-8"));
        // 忽略读取CSV文件的标题行(第一行!);
        file.readLine();
        /*
         * 遍历读取CSV文件中除第一行外其他所有内容,并存在在名为records的ArrayList中
         * 每一个records中存储的对象为一个String数组;
         */
        while ((record = file.readLine()) != null) {
            String fields[] = record.split(",");
            records.add(fields);
        }
        // 关闭文件对象;
        file.close();
        // 第一函数返回值,即Object[][]
        // 将存储测试数据的list 转换为一个Objectde 的二维数组;
        Object[][] results = new Object[records.size()][];
        for (int i = 0; i < records.size(); i++) {
            results[i] =  records.get(i);
        }
        return results;
}
}

测试读取结果:

TestNG框架教程三:参数化与数据驱动

原创文章,作者:三酷猫,如若转载,请注明出处:https://www.sankumao.com/4136.html

(0)
上一篇 2022年10月19日 下午4:46
下一篇 2022年10月20日 下午10:06

相关推荐

  • Java基础六:流(Stream)、文件(File)和IO

    Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。 Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。 一个…

    2022年10月17日
  • Java基础九:集合框架

    早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都…

    2022年10月18日
  • eclipse创建maven项目教程

    Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理,是一个自动化构建工具。在最新的 Eclipse 中自带了 Maven,我们打开,Windows->P…

    2022年10月19日
  • Java基础三:修饰符

    修饰符用来定义类、方法或者变量,通常放在语句的最前端。我们通过下面的例子来说明: 访问修饰符 default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:…

    2022年10月15日
  • TestNG框架教程一:新手入门

    一、安装JDK和eclipse编辑器 JDK安装,本站教程地址:https://www.sankumao.com/2426.html eclipse安装,下载地址:https://…

    2022年10月18日
  • Jmeter实现RPC接口测试简洁化需求

    根据需求,产品部分功能采用thrift-RPC协议进行接口的增、删、改、查,前期采用Junit对其进行测试,为了提高RPC接口测试的简洁化和后期的性能测试需求,打算通过Jmeter…

    2022年11月12日
  • Java基础七:面向对象

    继承 1.继承类型 需要注意的是 Java 不支持多继承,但支持多重继承。 2.继承关键字 extends:类的继承是单一继承 implements:接口的继承,可继承多个接口 3…

    2022年10月17日
  • Java+Selenium教程四:元素等待、窗口切换

    一、元素等待 1、硬性等待(不推荐) 2、隐式等待 3、显示等待 显示等待常用等待方法: 方法 等待条件 presenceOfElementLocated 页面元素在页面中存在 v…

    Java 2022年10月22日
  • Python中的traceback的基本用法(异常处理)

    一.Traceback介绍 在日常开发中,我们会做一些基本的异常处理,但是有时候只能打印我们处理的结果或者将异常打印出来,不能直观的知道在哪个文件中的哪一行出错。 运行结果: 而使…

    2022年11月12日
  • Java+Selenium教程一:环境搭建

    一、谷歌浏览器驱动 1、谷歌各版本下载http://www.chromedownloads.net/chrome64win/ 2、谷歌驱动下载http://npm.taobao.o…

    2022年10月21日