接口测试3-3Excel格式
java操作Excel,需要第三方库poi
#xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
<scope>test</scope>
</dependency>
Excel测试数据

读取Excel的java文件
#java
package com.netease.utils;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @author by LiHe on 2018/8/12.10:15
*/
public class ExcelReader {
public static Object[][] getTestData(String fileName, String sheetName) throws IOException {
File file = new File(fileName);
FileInputStream inputStream = new FileInputStream(file);
Workbook workbook = null;
/**
* 获取文件名参数的拓展名,判断是.xlsx还是xls
*/
String fileExtensionName = fileName.substring(fileName.indexOf("."));
/**
* 如果是.xlsx,则使用XSSFWorkbook对象进行实例化
* 如果是.xls,则使用HSSFWorkbook对象进行实例化
*/
if (fileExtensionName.equals(".xlsx")) {
workbook = new XSSFWorkbook(inputStream);
} else if (fileExtensionName.equals(".xls")) {
workbook = new HSSFWorkbook(inputStream);
} else {
System.out.println("该文件不是excel文件");
}
/**
* 通过sheetName参数,生成sheet对象
*/
Sheet sheet = workbook.getSheet(sheetName);
/***
* 获取Excel数据文件sheet1中数据的行数,getLastRowNum方法获取数据的最后一行行号
* getFirstRowNum方法获取数据的第一行行号,相减之后算出数据的行数
* Excel的行号和列号都是从0开始的
*/
int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
/***
* 创建名为records的list对象来存储从Excel中读取的数据
*/
List<Object[]> records = new ArrayList<Object[]>();
/**
* 使用两个for循环遍历Excel数据文件的所有数据。(除去第一行的列名称)
*/
for (int i = 1; i <= rowCount; i++) {
Row row = sheet.getRow(i);
/**
* 声明一个数组files,用来存储excel数据文件每行数据,数组的大小用getLastCellNum方法来进行动态声明。
*/
String files[] = new String[row.getLastCellNum()];
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell =row.getCell(j);
cell.setCellType(CellType.STRING);
files[j] = cell.getStringCellValue();
}
records.add(files);
}
Object[][] results = new Object[records.size()][];
for (int i = 0; i < records.size(); i++) {
results[i] = records.get(i);
}
return results;
}
}
测试类
#java
package testdata;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.IOException;
public class TestExcel {
@DataProvider(name = "excel")
public Object[][] testData() throws IOException {
return ExcelReader.getTestData("src/test/java/testdata/testExcelData.xlsx","Sheet1");
}
@Test(dataProvider = "excel")
public void test(String company,String people){
System.out.println(company+"\t"+people);
}
}
result:
阿里 马云
腾讯 马化腾
网易 丁磊
*
Default Suite
Total tests run: 3, Failures: 0, Skips: 0
===============================================*
接口测试3-3Excel格式的更多相关文章
- postman做接口测试 application/x-www-form-urlencoded 格式与json格式互转
背景:用postman做接口测试可以使用application/x-www-form-urlencoded请求,也可以使用json请求,接口文档如下: 请求参数 字段 类型 是否必填 注释 websi ...
- Alpha阶段测试报告
测试说明 APP中前后端交互的接口主要有两种,一种是游戏开始前获取信息的HTTP请求接口,这种接口可以看成是静态的,比较简单:另外一种就是游戏过程中进行实时通信的Websocket请求接口,因为这是在 ...
- 接口测试xml格式转换成json
未经允许,禁止转载!!!! 接口测试一般返回的是xml和json,现在大多数时候是返回成json的格式,但是有时候也会出现xml格式, 由于xml格式的文件阅读起来不是很容易懂,所以尽量将xml转换成 ...
- robot framework 接口测试 http协议post请求json格式
robot framework 接口测试 http协议post请求json格式 讲解一个基础版本.注意区分url地址和uri地址. rf和jmeter在添加服务器地址也就是ip地址的时候,只能url地 ...
- webservice接口测试wsdl,参数是xml格式。python,入参转化成str,返回值转化成dict调用
1.用SoapUI测试webservice接口,传入参数是xml格式时.xml格式需要将xml的外围增加<![CDATA[xml]]> 2.但是用python去做webservice测试, ...
- [JsonSchema] 关于接口测试 Json 格式比对核心算法实现 (Java 版)
引言 为什么要自己重新造轮子,而不是采用第三方的JsonSchema方法进行实现存在以下痛点:1.我之前在网上找了很久,没有找到java版直接进行jsonschema生成的方法或直接比较的方法2.ht ...
- 【SoapUI、Postman、WebServiceStudio、Jmeter】接口测试工具结合测试webservice接口(发送XML格式参数)
目录: SoapUI测试webservice接口,发送XML格式参数 Postman测试webservice接口,发送XML格式参数 WebServiceStudio.exe测试webservice接 ...
- 使用yaml格式进行接口测试报错
前言:本人公司使用yaml做接口测试.某日开发写了一个字典嵌套列表,列表里面再嵌套字典的接口. yaml的值应该为下图(注意缩进问题) 加了-代表下面是一个列表 {'uid': '3a61479f ...
- python sha256 键值对参数格式接口测试
# coding=utf-8 import requests import time import uuid import hashlib import hmac import random impo ...
- python接口测试3-JSON格式
什么是JSON? 一种轻量级的数据交换格式.它独立于语言和平台,JSON解析器和JSON库支持不同的编程语言.JSON具有自我描述性,很容易理解. 数据格式: { "name":& ...
随机推荐
- MyEclipse持续性开发教程:用JPA和Spring管理数据(二)
MyEclipse红运年货节 在线购买低至69折!火爆开抢>> [MyEclipse最新版下载] 本教程介绍了MyEclipse中的一些基于JPA / Spring的功能.有关设置JPA项 ...
- 安装win8时提不能在gpt磁盘中安装
首先,你要知道,GPT和NTFS根本就是两码事儿.所谓的GPT,是指可扩展固件接口 (EFI) 使用的磁盘分区架构,是与主启动记录 (MBR) 分区架构相对应的,是一种磁盘分区架构.而ntfs,fat ...
- 保护 iOS 用户数据安全: Keychain 和 Touch ID
原文:How To Secure iOS User Data: The Keychain and Touch ID 作者:Tim Mitra 译者:kmyhy 更新说明:本教程由 Tim Mitra ...
- SSH项目搭建(五)——web.xml文件配置
上一章写到pom.xml有一个报错,说找不到web.xml文件.确实是这样的,因为我们用maven搭建的web层里就是没有这个文件.我们能看到,webapp文件夹里是空的. 没有,就想办法把它弄出来. ...
- 基础练习 Sine之舞
基础练习 Sine之舞 时间限制:1.0s 内存限制:512.0MB 问题描述 最近FJ为他的奶牛们开设了数学分析课,FJ知道若要学好这门课,必须有一个好的三角函数基本功.所以他 ...
- Luogu 3245 大数
Luogu 3245 大数 开始就想 \(10\) 进制 \(hash\) ,\(Hash(r)\equiv Hash(l-1)\cdot 10^{r-l+1}\) ,感觉没什么美妙的性质啊... 然 ...
- SQLite数据库学习小结——native层实现
1. SQlite概述 SQLite是一款轻量.快速.跨平台的嵌入式数据库,是遵守ACID(注:ACID指数据库事务正确执行的四个基本要素的缩写.包含:原子性(Atomicity).一致性(Consi ...
- 51Nod1526 分配笔名
分析 在trie树上贪心,将所有串加入trie树中,在深度较深的地方匹配会更优. 由于只需要知道最后的总质量,所以直接取每个点的子树中最大的匹配即可 复杂度\(O(\sum len)\) 加串的时候把 ...
- es6语法快速上手(转载)
一.相关背景介绍 我们现在大多数人用的语法javascript 其实版本是ecmscript5,也是就es5.这个版本己经很多年了,且完美被各大浏览器所支持.所以很多学js的朋友可以一直分不清楚es5 ...
- java安全性-引用-分层-解耦
Java不支持指针, 一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用 "特洛伊"木马等欺骗手段访问对象的私有成员 访问一个对象必须通过这个对象的引用 java ...