51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2315|回复: 1
打印 上一主题 下一主题

【佳乐Selenium】DAY-6 参数化Excel

[复制链接]
  • TA的每日心情
    开心
    2024-10-4 10:34
  • 签到天数: 1208 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2015-3-3 16:00:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    转自:http://www.51testing.com/html/87/300987-832117.html

    三、使用excel表格读取测试数据
    1. 首先我们要用到的readExcel()这个方法,由于此方法中涉及到一些操作Excel 表格的API方法引用自jxl.jar这个包,所以大家需要确保在项目的Java Build Path里边需要添加testng.jar这个包。
    注:jxl.jar这个jar包可以在网上搜索到的,下载下来就可以用了,这次试验用到的是这个jar包。当然我们也可以通过java的poi技术读取和导入Excel,感觉poi技术比使用jxl.jar 包难一些,但是poi的功能很强大。


    我把readExcel()这个方法放在一个单独的类里边,类名为ExcelReader,如下
    package com.test.com.test.java;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    /**
    * 读取excle公共方法
    * @author Rob
    *
    */
    public class ExcelReader {
        /**
        *
        * @param excelFile 读取文件对象
        * @param rowNum 从第几行开始读,如果有一行标头则从第二行开始读
        *
        * @return
        * @throws BiffException
        * @throws IOException
        */
       public static String[] readExcel(File excelFile, int rowNum) throws BiffException,IOException
       {

          // 创建一个list用来存储读取的内容
          List<String[]> list = new ArrayList<String[]>();

          Workbook rwb = null;
          Cell cell = null;
          // 创建输入流
          InputStream stream = new FileInputStream(excelFile);
          // 获取Excel文件对象
          rwb = Workbook.getWorkbook(stream);
          // 获取文件的指定工作表  默认的第一个
          Sheet sheet = rwb.getSheet(0);
          // 行数(标头的目录不需要,从1开始)

          for (int i = rowNum-1; i < sheet.getRows(); i++)
          {
              // 创建一个数组  用来存储每一列的值

              String[] str = new String[sheet.getColumns()];

              // 列数
              for (int j = 0; j < sheet.getColumns(); j++)

              {

                 // 获取第i行,第j列的值

                 cell = sheet.getCell(j, i);
                 str[j] = cell.getContents();
              }
              // 把刚获取的列存入list

              list.add(str);         

          }
          return list.get(rowNum);

       }

    }





    测试方法如下:

    package com.test.com.test.java;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    import jxl.Cell;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.read.biff.BiffException;
    /**
    * 读取excle公共方法
    * @author Rob
    *
    */
    public class ExcelReader {
        /**
        *
        * @param excelFile 读取文件对象
        * @param rowNum 从第几行开始读,如果有一行标头则从第二行开始读
        *
        * @return
        * @throws BiffException
        * @throws IOException
        */
       public static String[] readExcel(File excelFile, int rowNum) throws BiffException,IOException
       {

          // 创建一个list用来存储读取的内容
          List<String[]> list = new ArrayList<String[]>();

          Workbook rwb = null;
          Cell cell = null;
          // 创建输入流
          InputStream stream = new FileInputStream(excelFile);
          // 获取Excel文件对象
          rwb = Workbook.getWorkbook(stream);
          // 获取文件的指定工作表  默认的第一个
          Sheet sheet = rwb.getSheet(0);
          // 行数(标头的目录不需要,从1开始)

          for (int i = rowNum-1; i < sheet.getRows(); i++)
          {
              // 创建一个数组  用来存储每一列的值

              String[] str = new String[sheet.getColumns()];

              // 列数
              for (int j = 0; j < sheet.getColumns(); j++)

              {

                 // 获取第i行,第j列的值

                 cell = sheet.getCell(j, i);
                 str[j] = cell.getContents();
              }
              // 把刚获取的列存入list

              list.add(str);         

          }
          return list.get(rowNum);

       }

    }


    abc.xls文件的内容为:
    username password
    justForYourTestingXLS 135135

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    该用户从未签到

    2#
    发表于 2015-3-6 15:18:27 | 只看该作者
    参数化利用Feed4JUnit貌似更简单,只需将组件的lib包里jar文件导入项目,然后创建测试类并在接收数据的测试方法上声明数据源为 @Source("Data.xls"),Excel 中的数据在传递过程中会自动按照列与测试方法的参数的位置顺序进行匹配,并以行作为一个单位读取并传递给测试方法体。这样可以省去读取excel的代码,要方便很多,详细见http://www.ibm.com/developerworks/cn/java/j-lo-feed4junit/
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-8 18:10 , Processed in 0.059424 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表