TestNG中的DataProvider返回Iterator<Object[]>的妙用

本文介绍如何在TestNG中使用DataProvider来简化测试数据管理。通过示例展示了如何创建和使用对象数组来传递测试数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TestNG中使用DataProvider有个好处,就是:

1. 在执行用例的时候dataProvider迭代中的每组数据都是作为一个用例执行

2. 在测试数据有规律的情况下,免去了添加testXML测试数据的烦恼,直接将测试数据,按个或者组,放到dataProvider中即可

注意:但是dataProvider作为数据提供者只能返回Object[][]和Iterator<Object[]>类型的数据

 

那我们的数据是按照对象存储的该怎么写入和输出呢,我这里提供一个简单的样例:

    // 返回Iterator<Object[]>
    @DataProvider(name = "iterator")
    public Iterator<Object[]> dp1() {
        List<Object> item = new ArrayList<Object>();

        // 添加第一个用户
        UserInfo user1 = new UserInfo();
        user1.setUserName("User1");
        user1.setPassword("Password1");
        item.add(user1);

        // 添加第二个用户
        UserInfo user2 = new UserInfo();
        user2.setUserName("User2");
        user2.setPassword("Password2");
        item.add(user2);

        List<Object[]> users = new ArrayList<Object[]>();

        for (Object u : item) {
            //做一个形式转换
            users.add(new Object[] { u });
        }
        return users.iterator();

    }

我们将上述的UserInfo的数据组放入到了iterator中,怎么调用呢?

    @Test(dataProvider = "iterator")
    public void testProvider(UserInfo user) {
        System.out.println("User Name is: "+ user.getUserName() +"\n"+"User password is" + user.getPassword());
        
    }

这里给出一个UserInfo的对象

/**  
* @Title: UserInfo.java
* @Package com.dataProvider.domain
* @Description: TODO(用一句话描述该文件做什么)
* @author pc
* @date 2017年1月16日
* @version V1.0  
*/

package com.dataProvider.domain;

/**
 * @ClassName: UserInfo
 * @Description: TODO(这里用一句话描述这个类的作用)
 * @author pc
 * @date 2017年1月16日
 *
 */

public class UserInfo {
    private String userName;
    private String password;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}

 

转载于:https://www.cnblogs.com/ilazysoft/p/6291003.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值