接口自动化(二)--操作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 ...
随机推荐
- 一次由webview报错引起的追根溯源
最近客户端那边需要搞了个h5嵌入app,想想是移动端的webview,前端这边也比较忙.就没想太多,直接用了async/await处理api数据,于是就不怪测试就来搞事情了... 一.error: 1 ...
- Rspec: everyday-rspec实操: 第9章 快速编写测试,编写快速的测试。
Make it work, make it right, make it fast. 测试运行的时间.应用和测试组件的增长,速度会越来越慢,目标是保持代码的readable, maintainable ...
- Android------Button 添加声音效果(两种方式)
我在先前的案例<Android 的底部导航栏 BottomNavigationBar>中添加以底部 的4个按钮切换添加声音 下来看看案例效果图 使用添加依赖 compile 'com.as ...
- JavaScript学习总结(二十二)——JavaScript屏蔽Backspace键
今天在IE浏览器下发现,当把使用readonly="readonly"属性将文本框设置成只读<input type="text" readonly=&qu ...
- Windows 7 IIS7.5上部署MVC实例
这段时间在用MVC写一个导游网站,在Window7上部署的时候,遇到和处理了一些问题. 现将完整的过程整理出来,供大家参考: 一.部署准备: 1.安装Microsoft .net FrameWork ...
- -webkit新属性 image-set和srcset
响应式图片的作用: 为使用不同分辨率的不同浏览器用户提供适合其浏览环境的图片大小的解决方案. 之前的解决方法是使用@media 但是-webkit新提出的image-set和srcset同样可以解决问 ...
- ZetCode PyQt4 tutorial widgets II
#!/usr/bin/python # -*- coding: utf-8 -*- """ ZetCode PyQt4 tutorial In this example, ...
- Oozie_04总结一下workflowf的运行流程【20161116】
4.1 bin/oozie ..... 提交任务 [hadoop@hadoop01 oozie-4.0.0-cdh5.3.6]$ bin/oozie job -oozie http://hadoop0 ...
- Bootstrap文件上传组件
前言:之前的三篇介绍了下bootstrap table的一些常见用法,发现博主对这种扁平化的风格有点着迷了.前两天做一个excel导入的功能,前端使用原始的input type='file'这种标签, ...
- 2018-2019-2 《网络对抗技术》Exp2 后门原理与实践 20165222
Exp2 后门原理与实践 实验环境 win7ip地址为: 192.168.136.130 kali.ip地址为: 192.168.136.129 两台虚拟机可以ping通 实验步骤 1,使用netca ...