zoukankan      html  css  js  c++  java
  • TestNG中的DataProvider返回Iterator<Object[]>的妙用

    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() +"
    "+"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;
        }
    
    }
  • 相关阅读:
    Filebeat Processors对日志数据的处理
    beats直接给es传输日志,自定义索引名
    Elasticsearch:修改fielddata
    Elasticsearch:Elasticsearch中的refresh和flush操作指南
    Elasticsearch创建索引(index)及一个文档(document)
    Elasticsearch:如何对PDF文件进行搜索
    C++ 类构造函数 & 析构函数~
    学习CSS的好地方:CSS Inspiration -- CSS灵感
    css式样里的content
    寄存器与cmp,mov,add,sub,IMUL指令
  • 原文地址:https://www.cnblogs.com/ilazysoft/p/6291003.html
Copyright © 2011-2022 走看看