接口自动化测试:参数化封装(excel文件读取)
log4j.properties文件配置
log4j.rootLogger = DEBUG,stdout,F log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.F = org.apache.log4j.DailyRollingFileAppender
log4j.appender.F.File = logs/debug.log
log4j.appender.F.Append = true
log4j.appender.F.Threshold = DEBUG
log4j.appender.F.layout = org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n #log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
#log4j.appender.D.File = logs/error.log
#log4j.appender.D.Append = true
#log4j.appender.D.Threshold = ERROR
#log4j.appender.D.layout = org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern =%-d{yyyy-MM-dd HH\:mm\:ss} [ %t\:%r ] - [ %p ] %m%n
获取异常信息内容工具类
import java.io.PrintWriter;
import java.io.StringWriter; public class ExceptionMessage {
public static String getTrace(Throwable t) {
StringWriter stringWriter= new StringWriter();
PrintWriter writer= new PrintWriter(stringWriter);
t.printStackTrace(writer);
StringBuffer buffer= stringWriter.getBuffer();
return buffer.toString();
}
}
读取EXCEL文件
package com.mazhan3.fileReader; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException; import org.apache.log4j.Logger;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.mazhan3.utils.ExceptionMessage; public class ExcelReader {
//标记两种excel文档的后缀名
private static final String EXTENSION_XLS = "xls";
private static final String EXTENSION_XLSX = "xlsx";
Logger log = Logger.getLogger(ExcelReader.class);
private Workbook wb = null;
/**
* 构造时加载excel文件
* @param filePath
*/
public ExcelReader(String filePath){
File file = new File(filePath);
String absolutePath = file.getAbsolutePath();
FileInputStream in = null;
try {
in = new FileInputStream(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
log.info(ExceptionMessage.getTrace(e));
log.error("文件没有发现");
}
getWorkBook(absolutePath, in);
} /**
*
* @param absolutePath
* @param in
*/
private void getWorkBook(String absolutePath, FileInputStream in) {
if(absolutePath.endsWith(EXTENSION_XLS)){
try {
wb = new HSSFWorkbook(in);
} catch (IOException e) {
log.info(ExceptionMessage.getTrace(e));
}
}else if(absolutePath.endsWith(EXTENSION_XLSX)){
try {
wb = new XSSFWorkbook(in);
} catch (IOException e) {
log.info(ExceptionMessage.getTrace(e));
}
}else{
log.error("EXCEL文件格式错误");
}
} /**
* 默认读取sheet0页
* 传入的行号与列号直接传入excel表格中的即可,更符合使用习惯,方法中已进行了处理
* 即如果想要获取A1的值,那么行号传1,列号传1即可。
* @param rowNum
* @param cellNum
* @return String类型的excel表格中存储的值
*/
public String getValue(int rowNum,int cellNum){
String value = getValue(rowNum,cellNum,0);
return value;
} /**
* 传入的行号与列号直接传入excel表格中的即可,更符合使用习惯,方法中已进行了处理
* 即如果想要获取A1的值,那么行号传1,列号传1即可。
* @param rowNum
* @param cellNum
* @param sheetNum
* @return String类型的excel表格中存储的值
*/
public String getValue(int rowNum,int cellNum,int sheetNum){
rowNum--;
cellNum--;
Row row = getRow(rowNum, sheetNum);
Cell cell = getCell(cellNum, row);
//return cell.getStringCellValue();
//如果选择了上面一行的方法,当输出一个数字时则
//会抛出java.lang.IllegalStateException: Cannot get a text value from a numeric cell return cell.toString();
} /**
* 拿到sheet页中的行
* @param rowNum
* @param sheetNum
* @return Row
*/
private Row getRow(int rowNum, int sheetNum) {
Sheet sheet = wb.getSheetAt(sheetNum);
//注意这里的行号,如果你有1,2,3,4四行,那么第一行的行号为0,最后一行的行号为3
int firstRowNum = sheet.getFirstRowNum();
int lastRowNum = sheet.getLastRowNum(); Row row = null; if(rowNum >= firstRowNum && rowNum <= lastRowNum){
row = sheet.getRow(rowNum);
}else{
log.error("行号输入错误,在excel文件sheet页内容的范围之外");
throw new RuntimeException("行号错误");
}
return row;
} /**
* 拿到行中的列
* @param cellNum
* @param row
* @return Cell
*/
private Cell getCell(int cellNum, Row row) {
Cell cell = null;
//注意列号,如果你的excel文件中有A,B,C三列,那么第一列号为0,最后一列的列号为3
int firstCellNum = row.getFirstCellNum();
int lastCellNum = row.getLastCellNum();
if(cellNum >= firstCellNum && cellNum < lastCellNum ){
cell = row.getCell(cellNum);
}else{
log.error("列号错误,,在excel文件sheet页内容的范围之外");
throw new RuntimeException("列号错误");
}
return cell;
} }
接口自动化测试:参数化封装(excel文件读取)的更多相关文章
- 记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)
前面补充了如何来操作excel文件,这次把如何获取excel文件的sheet对象.行数.单元格数据的方法进行封装,方便后面调用 handle_excel.py# coding:utf-8 import ...
- 自动化测试如何解析excel文件?
前言 自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是 ...
- 如何让excel文件读取变得更简单
今天给大家安利一款excel文件导入神器,easyexcel,官方地址:(https://github.com/alibaba/easyexcel). 在官网文档中有介绍了其性能. 从上面的性能测试可 ...
- C#操作Excel文件(读取Excel,写入Excel)
看到论坛里面不断有人提问关于读取excel和导入excel的相关问题.闲暇时间将我所知道的对excel的操作加以总结,如今共享大家,希望给大家可以给大家带了一定的帮助.另外我们还要注意一些简单的问题1 ...
- C#实现从EXCEL文件读取数据到SqlServer数据库
用第三方组件:NPOI组件实现 先去官网:http://npoi.codeplex.com/下载需要引入dll(可以选择.net2.0或者.net4.0的dll),然后在网站中添加引用.使用 NPOI ...
- python接口自动化21-下载excel文件(Content-Type:octets/stream)
前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...
- 接口自动化测试unittest+request+excel(一)
注: 学习python自动化测试,需要先学习python基础,主要还是多敲代码,多联系,孰能生巧,你也会是一名合格的程序员 python基础学习: http://c.biancheng.net/pyt ...
- 关于Npoi+excel文件读取,修改文件内容的处理方式
因最近有需求场景,实现对文件的读写操作,又不单独生成新的文件,对于源文件的修改,做了一个简单实现,如下↓ // 要操作的excel文件路径 string fileName = Server.MapPa ...
- Vue项目中导入excel文件读取成js数组
1. 安装组件 cnpm install xlsx --save 2. 代码 <template> <span> <input class="input-fil ...
随机推荐
- 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)
原文:第三章--使用系统函数.存储过程和DBCC SQLPERF命令来监控SQLServer(3) 本文为这个系列最后一篇.将是如何使用DBCC命令来监控SQLServer日志空间的使用情况. 前言: ...
- 使用C/C++编译预处理时须要注意的问题
1.宏定义不是C/C++语句,不须要使用语句结束符":",否则它也被看做宏体的一部分. 2.不要在引用宏定义的參数列表中使用增量和减量运算符,否则将导致变量的多次求值.比如: #d ...
- Eclipse SDK构建J2EE开发环境
鄙视官Java EE Developers 体积庞大的兄弟们可以提出自己的J2EE开发环境! 1.第一次去Eclipse官网下载Eclipse IDE 我使用的是:Eclipse IDE for Ja ...
- nodejs的安装和使用
一 下载 下载地址: https://nodejs.org/download/ 二 安装 1 win7系统直接双击,就能够执行了: 2 win8须要使用管理员权限执行,否则会报错Error 2502, ...
- Android定调的发展
首先,介绍一下Android系统支持的铃声格式. 有下面几种: 64赫兹Midi,AAC.AAC+.AMR.WAV.MP3.Real Audio.WMA.OGG等格式. 将音频文件设置成铃声非常eas ...
- POJ1080 Human Gene Functions 动态规划 LCS的变形
题意读了半年,唉,给你两串字符,然后长度不同,你能够用'-'把它们补成同样长度,补在哪里取决于得分,它会给你一个得分表,问你最大得分 跟LCS非常像的DP数组 dp[i][j]表示第一个字符串取第i个 ...
- Java中间MD5加密算法完整版
携带Java软件开发过程.,因此Java中提供了自带的MessageDigest实现对文本的加密算法,以下是一个对文本进行加密的MD5加密工具类代码演示样例: package net.yuerwan. ...
- SAP RFC 函数来创建 Java呼叫 学习总结 一步一步的插图
前言 该公司很快就接到了一个项目,SAP有接口.让我们做老大SAP.首先SAP联系.但发展从来没有打过.本周集中在这一个研究. 各种碰壁,SAP该系统让我怎么说? 算了.说多了都是泪,以下附上本周学习 ...
- 集成 Entity Framework
ABP 基础设施层——集成 Entity Framework 本文翻译自ABP的官方教程<EntityFramework Integration>,地址为:http://aspnetboi ...
- webservice发送字符串
假设只是发送一个字符串client,这是很easy,只需要输入xfire包,编写接口,编写的实现方法.变化. 假设你要传输的数组或自定义类.到用于接口准备的需要agexis文件.更复杂. 尝试传输这些 ...