自己写了一个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="" />

package com.milan.utils;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class ReadExcel { public static List<Map<String, String>> readXlsx(String fileName) { XSSFWorkbook xssfWorkbook=null;
try {
xssfWorkbook = new XSSFWorkbook(fileName);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 循环工作表Sheet
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
// 循环行Row
XSSFRow rowTitleRow =xssfSheet.getRow(0);
for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow == null) {
continue;
}
Map<String, String> map = new HashMap<String, String>();
// 循环列Cell
for (int cellNum = 0; cellNum <rowTitleRow.getLastCellNum(); cellNum++) {
XSSFCell xssfCell = xssfRow.getCell(cellNum);
XSSFCell xssfCellTitleCell = rowTitleRow.getCell(cellNum);
map.put(getValue(xssfCellTitleCell), getValue(xssfCell));
}
list.add(map); }
return list;
}
@SuppressWarnings("static-access")
private static String getValue(XSSFCell xssfCell) {
if (xssfCell ==null){return ""; }
if (xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN) {
return String.valueOf(xssfCell.getBooleanCellValue());
} else if (xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC) {
return String.valueOf(xssfCell.getNumericCellValue());
} else {
return String.valueOf(xssfCell.getStringCellValue());
}
}
}

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好友发送消息,但是发送消息需要先登录,所以这里可以放登录的用户名和密码。

package com.milan.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class CaseHelper {
//根据excel的map 转换为数组 第一个为 入参 map 第二个为用例说明,第三个参数为执行用例的预置条件
public static Object[] getObjArrByMap(Map<String,String> caseExcelMap){
Map<String,String> caseParam = new HashMap<String,String>();
Map<String,String> caseDesc = new HashMap<String,String>();
Map<String,String> casePreset =new HashMap<String,String>();
CaseInfo ci = new CaseInfo();
for (String key : caseExcelMap.keySet()) {
if (key.indexOf("{$d}")== 0){
caseDesc.put(key.replace("{$d}", ""), caseExcelMap.get(key));
}
else if(key.indexOf("{$p}") == 0){
casePreset.put(key.replace("{$p}", ""), caseExcelMap.get(key));
}
else {
String strValue = caseExcelMap.get(key);
if (!strValue.equals("")){
caseParam.put(key, strValue);
}
}
}
ci.setCaseDesc(caseDesc);
ci.setCaseParam(caseParam);
ci.setCasePreset(casePreset); return new Object[]{ci};
}
///根据excel获取的list转换为 Object[][]
public static Object[][] getObjArrByList(List<Map<String,String>> caseExcelList){
List<Map<String,String>> caseExcuteList = getExcuteList(caseExcelList);
Object[][] objArray = new Object[caseExcuteList.size()][];
for(int i = 0;i<caseExcuteList.size();i++){
objArray[i]=getObjArrByMap(caseExcuteList.get(i));
}
return objArray; }
///赛选出需要执行的用例
private static List<Map<String,String>> getExcuteList(List<Map<String,String>> caseExcelList){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
for( Map<String,String> m : caseExcelList){
String str = m.get("{$d}isexcute").trim().toLowerCase();
if (str.equals("y")){
list.add(m);
}
}
return list;
} }

3、用例类

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

package com.milan.utils;

import java.util.Map;

public class CaseInfo {
///{$d}isexcute 为y的时候表示需要执行 //用例参数 在excel中知己以字段名开头
private Map<String,String> caseParam;
//用例说明 在excel中以{$d}开头
private Map<String,String> caseDesc;
//用例预置条件 在excel中以{$p}开头
private Map<String,String> casePreset; public Map<String, String> getCaseParam() {
return caseParam;
}
public void setCaseParam(Map<String, String> caseParam) {
this.caseParam = caseParam;
}
public Map<String, String> getCaseDesc() {
return caseDesc;
}
public void setCaseDesc(Map<String, String> caseDesc) {
this.caseDesc = caseDesc;
}
public Map<String, String> getCasePreset() {
return casePreset;
}
public void setCasePreset(Map<String, String> casePreset) {
this.casePreset = casePreset;
} }

4、运行

package com.milan.test;

import java.io.IOException;
import java.util.List;
import java.util.Map; import org.testng.annotations.DataProvider;
import org.testng.annotations.Test; import com.milan.utils.CaseHelper;
import com.milan.utils.CaseInfo;
import com.milan.utils.ReadExcel; public class MyTest {
protected String caseExcelPath =System.getProperty("user.dir")+"\\excel\\temp.xlsx"; @DataProvider(name = "dataInfo")
protected Object[][] dataInfo1() throws IOException { Object[][] myObj = null;
List<Map<String, String>> list = ReadExcel.readXlsx(caseExcelPath);
myObj = CaseHelper.getObjArrByList(list);
return myObj;
}
@Test(dataProvider="dataInfo")
public void testByExcel_Body(CaseInfo c) throws IOException{
///获取用例说明
System.out.println(c.getCaseDesc());
///获取用例需要的参数
System.out.println(c.getCaseParam());
//获取执行用例需要的前置条件
System.out.println(c.getCasePreset());
} }

5、输出结果:

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

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

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

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

public class Test2 {
public static void main(String[] args) {
//DefaultTest defaultTest = new DefaultTest();
TestNG testNG = new TestNG();
testNG.setTestClasses(new Class[]{DefaultTest.class});
testNG.run();
}
}

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. 深入浅出java并发

    http://www.blogjava.net/xylz/archive/2010/07/08/325587.html

  2. android4.4组件分析--service组件-bindService源代码分析

    6.1.1.    bindService 由于有前面分析startService的代码实现过程,则对于bindService的代码分析就不用那么具体介绍,在介绍流程的同一时候更关注一些细节上的部分. ...

  3. ipad pro注定是失败的!

    ipad pro注定是失败的! 把一个玩具操作系统装在生产力工具上就能产生生产力了? so young so simple!

  4. Code digest

    private void travelDir(String filepath) { String threadName = Thread.currentThread().toString(); log ...

  5. React组件开发入门

    React 组件开发入门 Introduction 本文组成: Ryan Clark文章Getting started with React的翻译. 博主的实践心得. React由Facebook的程 ...

  6. nefu117 素数个数的位数,素数定理

    素数个数的位数 Time Limit 1000ms Memory Limit 65536K description 小明是一个聪明的孩子,对数论有着非常浓烈的兴趣.他发现求1到正整数10n 之间有多少 ...

  7. mysql三学习sql声明学习

    SQL 是一门 ANSI 的标准计算机语言,用来訪问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比方MySQL. MS Access.DB2.Infor ...

  8. RPM安装包-Spec文件參数具体解释与演示样例分析

    spec文件是整个RPM包建立过程的中心,它的作用就如同编译程序时的Makefile文件. 1.Spec文件參数 spec文件包括建立一个RPM包必需的信息,包括哪些文件是包的一部分以及它们安装在哪个 ...

  9. Linux入门介绍

    Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以 ...

  10. Unobtrusive JavaScript 是什么?

    Unobtrusive JavaScript 是什么? <!--以下是常规Javascript下写出来的Ajax--><div id="test">< ...