自己写了一个testng执行excel用例的小程序,主要是运行.xlsx的,需要支持xls可以自己扩展,分享一下。下载地址:http://yun.baidu.com/share/link?shareid=3811093173&uk=925574576&third=0

需要引用的jar包有(demo里面也有这些jar包):

aaarticlea/png;base64,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" alt="" />

1、读取excel

excel的数据放入List<Map<String, String>>中。这里,不包括excel第一条数据,因为第一条数据要作为map的key值。

excel格式:

aaarticlea/png;base64,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" alt="" />

  1. package com.milan.utils;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import org.apache.poi.xssf.usermodel.XSSFCell;
  9. import org.apache.poi.xssf.usermodel.XSSFRow;
  10. import org.apache.poi.xssf.usermodel.XSSFSheet;
  11. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  12.  
  13. public class ReadExcel {
  14.  
  15. public static List<Map<String, String>> readXlsx(String fileName) {
  16.  
  17. XSSFWorkbook xssfWorkbook=null;
  18. try {
  19. xssfWorkbook = new XSSFWorkbook(fileName);
  20. } catch (IOException e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
  24. // 循环工作表Sheet
  25. XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
  26. List<Map<String, String>> list = new ArrayList<Map<String, String>>();
  27. // 循环行Row
  28. XSSFRow rowTitleRow =xssfSheet.getRow(0);
  29. for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
  30. XSSFRow xssfRow = xssfSheet.getRow(rowNum);
  31.  
  32. if (xssfRow == null) {
  33. continue;
  34. }
  35. Map<String, String> map = new HashMap<String, String>();
  36. // 循环列Cell
  37. for (int cellNum = 0; cellNum <rowTitleRow.getLastCellNum(); cellNum++) {
  38. XSSFCell xssfCell = xssfRow.getCell(cellNum);
  39. XSSFCell xssfCellTitleCell = rowTitleRow.getCell(cellNum);
  40. map.put(getValue(xssfCellTitleCell), getValue(xssfCell));
  41. }
  42. list.add(map);
  43.  
  44. }
  45. return list;
  46. }
  47. @SuppressWarnings("static-access")
  48. private static String getValue(XSSFCell xssfCell) {
  49. if (xssfCell ==null){return ""; }
  50. if (xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN) {
  51. return String.valueOf(xssfCell.getBooleanCellValue());
  52. } else if (xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC) {
  53. return String.valueOf(xssfCell.getNumericCellValue());
  54. } else {
  55. return String.valueOf(xssfCell.getStringCellValue());
  56. }
  57. }
  58. }

2、解析excel的数据

   aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHsAAABKCAIAAAAUg7wgAAACa0lEQVR4nO2Z0U7bMBSG/Uhc7V2GNjENMQ2BmPYSu+jbcMENl7zCpgmVVhUwTUUIwRuEiyOqqMlxjk+dv3b5P/2qGsex3S/BCU5oCJawuH9hkKFxuPFfBEtofn+UXE32FvdLJlfOLy57y0PzZ19C4yjjfz9JaBxl/PqzhMZRxqcHEhpHGb/5Iinc+IcOWx+S1/j8q6Rw4yI9slladOOLQ0lFxgt3PWT89khC4yjjd98kVRivZRKPGv/3XVKF8bUvJUc3/v9YQuMo48sTSUXGq4hu/OFUQuMo449nksKNV3TPHDL+9ENSuPHqoht//imhcZDxq8neKucXl8zYCat3zNPZfGvvt3cRzSeNjwWNo3EaDyGEELrldjZvoVL8xo2FEWi8TbLx8IbWU3evdtp2+0zkMS6b7c/+Rus0nnc8xRkvkNKNd2u2iTTSRKemSCPd8tVm/JC1yt3N+OAHJ9JePMbts4FFcW9TkRLtu7ZrwzqWYSdJz/yskjR0baDGE9N0rsHey9DRo8V4pN84+Z8Ojdeg1kikcbvB9iGOHn1/mkbGvXNmNN67l8Zjxt2/P97mYLXUOpZxFjGPazNau3ytwuD82FseOcTSqTZUyyGD/VrIua6S1LdjrLtBzrXD92kwFdX4dDZnkPFc48RCzlmFWKBxNDSOhsbR0DgaGkdD42gSjK8tI/hWFUjaNb7JmhkRkmeVoKyCEiM0jsZpnLrdeJ5VeMPcBKfxEUe069A4Gv/zOPGhGt/6O5H3Fv6XPxYJswrJAo2joXE0NI6GxtHQOBoaR0PjaGgcDY2joXE0NI6GxtHQOBoaR6P5fAXm8WlLjuDdhgAAAABJRU5ErkJggg==" alt="" />excel中,这个字段的值为y表示需要执行测试用例,如果为其他的,则表示不执行。

字段中{$d}开头的表示用例说明。{$p}开头的,表示用例需要的预置参数。比如QQ好友发送消息,但是发送消息需要先登录,所以这里可以放登录的用户名和密码。

  1. package com.milan.utils;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. public class CaseHelper {
  8. //根据excel的map 转换为数组 第一个为 入参 map 第二个为用例说明,第三个参数为执行用例的预置条件
  9. public static Object[] getObjArrByMap(Map<String,String> caseExcelMap){
  10. Map<String,String> caseParam = new HashMap<String,String>();
  11. Map<String,String> caseDesc = new HashMap<String,String>();
  12. Map<String,String> casePreset =new HashMap<String,String>();
  13. CaseInfo ci = new CaseInfo();
  14. for (String key : caseExcelMap.keySet()) {
  15. if (key.indexOf("{$d}")== 0){
  16. caseDesc.put(key.replace("{$d}", ""), caseExcelMap.get(key));
  17. }
  18. else if(key.indexOf("{$p}") == 0){
  19. casePreset.put(key.replace("{$p}", ""), caseExcelMap.get(key));
  20. }
  21. else {
  22. String strValue = caseExcelMap.get(key);
  23. if (!strValue.equals("")){
  24. caseParam.put(key, strValue);
  25. }
  26. }
  27. }
  28. ci.setCaseDesc(caseDesc);
  29. ci.setCaseParam(caseParam);
  30. ci.setCasePreset(casePreset);
  31.  
  32. return new Object[]{ci};
  33. }
  34. ///根据excel获取的list转换为 Object[][]
  35. public static Object[][] getObjArrByList(List<Map<String,String>> caseExcelList){
  36. List<Map<String,String>> caseExcuteList = getExcuteList(caseExcelList);
  37. Object[][] objArray = new Object[caseExcuteList.size()][];
  38. for(int i = 0;i<caseExcuteList.size();i++){
  39. objArray[i]=getObjArrByMap(caseExcuteList.get(i));
  40. }
  41. return objArray;
  42.  
  43. }
  44. ///赛选出需要执行的用例
  45. private static List<Map<String,String>> getExcuteList(List<Map<String,String>> caseExcelList){
  46. List<Map<String,String>> list = new ArrayList<Map<String,String>>();
  47. for( Map<String,String> m : caseExcelList){
  48. String str = m.get("{$d}isexcute").trim().toLowerCase();
  49. if (str.equals("y")){
  50. list.add(m);
  51. }
  52. }
  53. return list;
  54. }
  55.  
  56. }

3、用例类

用例类有3个属性,分别是参数,用例说明,预置参数。

  1. package com.milan.utils;
  2.  
  3. import java.util.Map;
  4.  
  5. public class CaseInfo {
  6. ///{$d}isexcute 为y的时候表示需要执行
  7.  
  8. //用例参数 在excel中知己以字段名开头
  9. private Map<String,String> caseParam;
  10. //用例说明 在excel中以{$d}开头
  11. private Map<String,String> caseDesc;
  12. //用例预置条件 在excel中以{$p}开头
  13. private Map<String,String> casePreset;
  14.  
  15. public Map<String, String> getCaseParam() {
  16. return caseParam;
  17. }
  18. public void setCaseParam(Map<String, String> caseParam) {
  19. this.caseParam = caseParam;
  20. }
  21. public Map<String, String> getCaseDesc() {
  22. return caseDesc;
  23. }
  24. public void setCaseDesc(Map<String, String> caseDesc) {
  25. this.caseDesc = caseDesc;
  26. }
  27. public Map<String, String> getCasePreset() {
  28. return casePreset;
  29. }
  30. public void setCasePreset(Map<String, String> casePreset) {
  31. this.casePreset = casePreset;
  32. }
  33.  
  34. }

4、运行

  1. package com.milan.test;
  2.  
  3. import java.io.IOException;
  4. import java.util.List;
  5. import java.util.Map;
  6.  
  7. import org.testng.annotations.DataProvider;
  8. import org.testng.annotations.Test;
  9.  
  10. import com.milan.utils.CaseHelper;
  11. import com.milan.utils.CaseInfo;
  12. import com.milan.utils.ReadExcel;
  13.  
  14. public class MyTest {
  15. protected String caseExcelPath =System.getProperty("user.dir")+"\\excel\\temp.xlsx";
  16.  
  17. @DataProvider(name = "dataInfo")
  18. protected Object[][] dataInfo1() throws IOException {
  19.  
  20. Object[][] myObj = null;
  21. List<Map<String, String>> list = ReadExcel.readXlsx(caseExcelPath);
  22. myObj = CaseHelper.getObjArrByList(list);
  23. return myObj;
  24. }
  25. @Test(dataProvider="dataInfo")
  26. public void testByExcel_Body(CaseInfo c) throws IOException{
  27. ///获取用例说明
  28. System.out.println(c.getCaseDesc());
  29. ///获取用例需要的参数
  30. System.out.println(c.getCaseParam());
  31. //获取执行用例需要的前置条件
  32. System.out.println(c.getCasePreset());
  33. }
  34.  
  35. }

5、输出结果:

  1. {caseExpect=1, isexcute=y, caseDesc=发送消息}
  2. {sendname=发送者名称, send=发送消息}
  3. {login=登录字符串}

读取到excel的值之后,就可以自己加断言,自己去请求数据调方法等等。

testng断言失败,继续执行 http://blog.csdn.net/m1011566442/article/details/52084896

testng代码执行  https://www.cnblogs.com/digod/p/6035177.html

  1. public class Test2 {
  2. public static void main(String[] args) {
  3. //DefaultTest defaultTest = new DefaultTest();
  4. TestNG testNG = new TestNG();
  5. testNG.setTestClasses(new Class[]{DefaultTest.class});
  6. testNG.run();
  7. }
  8. }

testNg自动化,读取excel的数据的更多相关文章

  1. 上传读取Excel文件数据

    /// <summary> /// 上传读取Excel文件数据 /// 来自http://www.cnblogs.com/cielwater /// </summary> // ...

  2. VC6.0读取Excel文件数据

    啰嗦一下:本人所在公司从事碟式斯特林太阳能发电设备的研发与销售.单台设备图如下: 工作原理如下:整个设备大致可分为五个部分, 1.服务器,负责气象.发电等数据存取,电.网连接等处理: 2.气象站,通过 ...

  3. 利用PHPExcel读取Excel的数据和导出数据到Excel

    PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel.也是我们日常开发中,经常会遇到的使用场景.比如有个客户信息表,要批量导出发给同事,我 ...

  4. C#读取Excel的数据,并且以混合模式读取,防止数据类型变更

    /// <summary> /// Read Excel to DataSet /// </summary> /// <param name="filename ...

  5. phpexcel如何读取excel的数据和如何导出数据到excel

    phpexcel如何读取excel的数据和如何导出数据到excel 一.总结 一句话总结:去官网看参考手册和api,或者找中文的博客或者参考手册 1.phpexcel插件如何下载? 其实这些插件不仅可 ...

  6. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  7. 利用 pandas库读取excel表格数据

    利用 pandas库读取excel表格数据 初入IT行业,愿与大家一起学习,共同进步,有问题请指出!! 还在为数据读取而头疼呢,请看下方简洁介绍: 数据来源为国家统计局网站下载: 具体方法 代码: i ...

  8. java后台读取excel模板数据

    /** * 读取EXCEL模板数据 * * @param excelFilePath excel文件路径 * @param dataRowNum 开始读取数据的行数 * @param keyRowNu ...

  9. python读取excel所有数据(cmd界面)

    python读取excel所有数据(cmd界面) cmd界面显示excel数据 代码 import xlrd import os from prettytable import PrettyTable ...

  10. go读取excel表格数据

    go读取excel表格数据 使用工具 github.com/Luxurioust/excelize 百度到的都是使用这个 实际上已经改名了 github.com/360EntSecGroup-Skyl ...

随机推荐

  1. React.js入门笔记 创建hello world 的6种方式

    一.ReactJS简介 React 起源于 Facebook 的内部项目,因为该公司对市场上所有 JavaScript MVC 框架,都不满意,就决定自己写一套,用来架设 Instagram 的网站. ...

  2. lua 怎样输出树状结构的table?

    为了让游戏前端数据输出更加条理,做了一个简单树状结构来打印数据. ccmlog.lua local function __tostring(value, indent, vmap) local str ...

  3. [linux]scp指令(转)

    Linux scp命令用于Linux之间复制文件和目录,具体如何使用这里好好介绍一下,从本地复制到远程.从远程复制到本地是两种使用方式.这里有具体举例: ================== Linu ...

  4. 杭州电 1203 I NEED A OFFER!

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. DevExpress XtraReports 入门五 创建交叉表报表

    原文:DevExpress XtraReports 入门五 创建交叉表报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪 ...

  6. oracle 11g 自己主动调整

    --:自己主动调教计划 begin   dbms_workload_repository.create_snapshot(); end; select /*+ result_cache */ coun ...

  7. 设置韩澳大利亚sinox弄winxp清除字体和界面美观

    澳大利亚开始与汉sinox一直以为接口暗淡,字体比较模糊,否winxp光明,导致眼比较辛苦的眼睛.比方说,可能不那么黯淡刺眼,有益眼睛,但我不能忍受字体模糊.即使调整分辨率,,但是字体模糊还是没有改观 ...

  8. 虚拟化(一):虚拟化和vmware产品描述

    由于公司最近取得了虚拟化监控,因此,我们需要虚拟化的认识,总结学习,对于虚拟化的概念.从百度百科,例如下列:         虚拟化.是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.在一台计算机上 ...

  9. string.Format对C#字符串格式化

    String.Format 方法的几种定义: String.Format (String, Object) 将指定的 String 中的格式项替换为指定的 Object 实例的值的文本等效项.Stri ...

  10. javascript系列之执行上下文

    原文:javascript系列之执行上下文 写在前面:一 直想系统的总结一下学过的javascript知识,喜欢这门语言也热爱这门语言.未来想从事前端方面的工作,提前把自己的知识梳理一下.前面写了些 ...