接口自动化(二)--操作Excel获取需要数据
这一部分的内容记述一下对Excel表格的操作,本实战中的测试用例是由Excel来管理的,因此操作Excel是重要的一部分。
再次贴出这张图,所有的测试用例都在这个sheet内,请求数据真实存放在json文件内,表格中的请求数据列放置的是json文件内字典的key值。
操作Excel主要就是取出Excel中的case(即数据),然后执行,重点是怎样取出数据,因为有些数据是不需要的,所以不能用遍历Excel的方法来取数据。
思路一:把列数作为常量,行数作为变量来取想要的数据
思路二:把Excel中不需要的列数据剪切掉,留下需要的数据,然后遍历Excel
这里使用的思路一
下面是excelColNum.py的源码(请根据需要灵活使用,模块作用参考第一篇文章):
class ExcelColNum():
case_id = 0
model = 1
case_name = 2
url = 4
header = 5
run = 6
requestMethord = 7
caseDepend = 8
depReKey = 9
depKey = 10
requestData = 11
respectResult = 12
returnData = 13
realResult = 14 #获取用例ID
def get_caseID(self):
return ExcelColNum.case_id #获取请求的url
def get_url(self):
return ExcelColNum.url #获取是否运行
def get_run(self):
return ExcelColNum.run #获取请求方式
def get_methord(self):
return ExcelColNum.requestMethord #获取请求数据
def get_requestData(self):
return ExcelColNum.requestData #或取是否携带header
def get_haeder(self):
return ExcelColNum.header #获取被依赖的caseID
def getDepCaseID(self):
return ExcelColNum.caseDepend #获取被依赖的用例的返回数据的key值
def getDepReKey(self):
return ExcelColNum.depReKey #获取依赖的需要传入值的key值
def getDepKey(self):
return ExcelColNum.depKey #获取预期结果
def getRespectResult(self):
return ExcelColNum.respectResult #获取返回数据
def getReturnResult(self):
return ExcelColNum.returnData #实际结果
def getRealResult(self):
return ExcelColNum.realResult
然后是operateExcel.py的源码:
import xlrd
from xlutils.copy import copy class operateExcel():
def __init__(self,excelPath=None,sheetName=None):
#容错处理
if excelPath:
self.excelPath = excelPath
self.sheetName = sheetName
else:
self.excelPath = "******" #Excel文件的路径
self.sheetName = "******" #sheet的名字
self.data = self.openExcel()
#打开Excel表格
def openExcel(self):
file = xlrd.open_workbook(self.excelPath)
sheet = file.sheet_by_name(self.sheetName)
return sheet #获取sheet的行数
def getSheetRow(self):
rows = self.data.nrows
return rows #获取sheet的列数
def getSheetCol(self):
cols = self.data.ncols
return cols #获取某一个单元格的内容
def getCellContent(self,rowNum,colNum):
content = self.data.cell_value(rowNum,colNum)
return content #向excel里追加写入数据
def writeValue(self,rowNum,colNum,value):
file = xlrd.open_workbook(self.excelPath)
workbook = copy(file)
sheetData = workbook.get_sheet(0)
sheetData.write(rowNum,colNum,value)
workbook.save(self.excelPath) #获取Excel中某一列的内容
def getColData(self,colNum=None):
if colNum != None:
colData = self.data.col_values(colNum)
else:
colData = self.data.col_values(0)
return colData #根据依赖的caseID找到对应的行号
def depRowNum(self,caseID):
rowNum = 0
colDatas = self.getColData()
for colData in colDatas:
if caseID in colData:
return rowNum
rowNum += 1 # 根据行号获取对应行的整行内容
def getRowData(self, rowNum):
rowData = self.data.row_values(rowNum)
return rowData #根据依赖的caseID,获取依赖case的行号,根据行号取出对应行的内容
def dependCaseData(self,caseID):
rowNum = self.depRowNum(caseID)
rowData = self.getRowData(rowNum)
return rowData
下面是get_Case的源码:
from data import operateExcel
from data import excelColNum
from data import operateJson
import json class getCaseData():
def __init__(self):
self.operateExcel = operateExcel.operateExcel()
self.excelColNum = excelColNum.ExcelColNum()
self.operateJson = operateJson.operateJson() # 获取测试用例的行数,即case的个数,即表格的行数
def getExcelRow(self):
excelRows = self.operateExcel.getSheetRow()
return excelRows #获取是否执行
def getRun_or_not(self,rowNum):
flag = None
colNum = self.excelColNum.get_run()
runOrNot = self.operateExcel.getCellContent(rowNum,colNum)
if runOrNot == "yes":
flag = True
else:
flag = False
return flag #获取是否携带header,header可以放在配置文件内
def getHeader(self,rowNum):
colNum = self.excelColNum.get_haeder()
headers = self.operateExcel.getCellContent(rowNum,colNum)
headers = json.loads(headers)
return headers #获取请求方式
def getRequestMethord(self,rowNum):
colNum = self.excelColNum.get_methord()
requestmethord = self.operateExcel.getCellContent(rowNum,colNum)
return requestmethord #获取请求的url
def getUrl(self,rowNum):
colNum = self.excelColNum.get_url()
url = self.operateExcel.getCellContent(rowNum,colNum)
return url #获取请求数据
def getRequestData(self,rowNum):
colNum = self.excelColNum.get_requestData()
reqData = self.operateExcel.getCellContent(rowNum,colNum)
if reqData == "":
return None
else:
return reqData #获取json文件内的请求数据
def getJsonData(self,rowNum):
data = self.operateJson.getJsonData(self.getRequestData(rowNum))
data = json.dumps(data)
return data #获取预期结果
def getRespectResult(self,rowNum):
colNum = self.excelColNum.getRespectResult()
resResult = self.operateExcel.getCellContent(rowNum,colNum)
if resResult == "":
return None
return resResult #写入返回数据
def wriReturn(self,rowNum,value):
colNum = self.excelColNum.getReturnResult()
self.operateExcel.writeValue(rowNum,colNum,value) #写入实际结果(pass、fail)
def wriRealResult(self,rowNum,value):
colNum = self.excelColNum.getRealResult()
self.operateExcel.writeValue(rowNum,colNum,value) # 判断是否有case依赖
def judgeCaseDep(self, rowNum):
colNum = self.excelColNum.getDepCaseID()
caseID = self.operateExcel.getCellContent(rowNum, colNum)
if caseID != "":
return caseID
else:
return None #获取Excel中被依赖返回数据中的值
def getDepReKey(self,rowNum):
colNum = self.excelColNum.getDepReKey()
reKey = self.operateExcel.getCellContent(rowNum,colNum)
if reKey == "":
return None
else:
return reKey #获取Excel中需要传入的依赖的数据
def getDependKey(self,rowNum):
colNum = self.excelColNum.getDepKey()
depkey = self.operateExcel.getCellContent(rowNum,colNum)
if depkey != "":
return depkey
else:
return None
接口自动化(二)--操作Excel获取需要数据的更多相关文章
- python接口自动化之读取excel表的数据(使用openpyxl模块)
1.安装openpyxl:pip install openpyxl 2.基础知识,直接上代码 import openpyxl #导入模块 wd2=openpyxl.load_workbook('stu ...
- 记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)
前面补充了如何来操作excel文件,这次把如何获取excel文件的sheet对象.行数.单元格数据的方法进行封装,方便后面调用 handle_excel.py# coding:utf-8 import ...
- HTML5操作麦克风获取音频数据(WAV)的一些基础技能
基于HTML5的新特性,操作其实思路很简单. 首先通过navigator获取设备,然后通过设备监听语音数据,进行原始数据采集. 相关的案例比较多,最典型的就是链接:https://developer. ...
- python接口自动化21-下载excel文件(Content-Type:octets/stream)
前言 Content-Type类型为octets/stream,这种一般是文件类型了,比如有时候需要导出excel数据,下载excel这种场景如何用python来实现呢? 抓下载接口 1.下载的场景如 ...
- MOOC(7)- case依赖、读取json配置文件进行多个接口请求-xlrd操作excel(11)
xlrd操作excel # -*- coding: utf-8 -*- # @Time : 2020/2/12 9:14 # @File : do_excel_xlrd_11.py # @Author ...
- NPOI操作excel之写入数据到excel表
在上一篇<NPOI操作excel之读取excel数据>我们把excel数据写入了datatable中,本篇就讲如何把datatable数据写入excel中. using System; u ...
- .Net实现微信公众平台开发接口(二) 之 “获取access_token”
access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token. 接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/ ...
- python操作excel获取内容
背景:从excel表中获取请求url.请求数据.请求类型.预期结果 因此,需要学会如何使用python从excel获取这些信息 #coding=utf-8 import xlrd #创建对象时,获取对 ...
- python接口自动化,从excel取param的内容太多,使用eval转换报错'EOL while scanning string literal
背景: 做接口自动化时,有个接口的参数内容很多,可以从excel中读取出来,但是在eval()进行转化时,就报错"'EOL while scanning string literal&quo ...
随机推荐
- MOBA游戏学会这些知识,你才算真的入门了!
<英魂之刃口袋版>是一个标准的MOBA游戏,MOBA指的是多人在线战术竞技游戏,游戏模式始于1998年<星际争霸>中的一张自定义地图,经过近20年的优化和调整逐渐演变成了我们现 ...
- 10个有趣的Javascript和CSS库
Tailwind CSS Tailwind是用于构建自定义用户界面的实用CSS框架. 每个Tailwind小应用都有多种尺寸,这使得创建响应式界面变得非常简单. 您可以自定义颜色,边框尺寸,字体,阴影 ...
- Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理 转自:https://www.jianshu.com/p/2b71ea919d49 本系列文章首发于我的个人博 ...
- Chrome插件(Extensions)开发实践
内容摘自:http://www.cnblogs.com/mfryf/p/3701801.html
- C++设计与声明——让接口容易被正确使用
一个简答易错的例子 class Date { public Date(int month,int day,int year); } 一年后使用这个接口的时候,写了Date d(15,10,2015)或 ...
- CentOS6.5系统服务
服务名称 功能 默认 建议 备注说明 NetworkManager 用于自动连接网络,常用在Laptop上 开启 关闭 对服务器无用 abrt-ccpp 开启 自定 对服务器无用 abrt-oop ...
- IOS下使用多线程
ios有三种主要方法:1.NSThread.2.NSOperation.3.GCD. 1. NSThread: 调用方法如下:如果需要函数参数的话,可以通过Object传递. 1.1:[NSThre ...
- 转:Android-apt
转自http://blog.csdn.net/zjbpku/article/details/22976291 What is this? The Android-apt plugin assists ...
- tf.cast()数据类型转换
tf.cast()函数的作用是执行 tensorflow 中张量数据类型转换,比如读入的图片如果是int8类型的,一般在要在训练前把图像的数据格式转换为float32. cast定义: cast(x, ...
- VirtualBox只能生成32位虚拟机
/************************************************************************* * VirtualBox只能生成32位虚拟机 * ...