v2
‘’’
函数名:def get_excel_data()
版本:v2.0
函数功能:
1- 获取请求的body与预期的响应结果!
具体方案:
1- 导入对应的excel读取的库 xlrd 处理xxx.xls 格式 ; openpyxl xx.xlxs
2- 把excel文件读取到内存 excel对象
3- 找到你需要操作的sheet
4- 读取对应的行与列数据(单元格数据)
'''
import xlrd
def get_excel_data(excelDir,sheetName, caseName):
resList=[]
#1,加载excel
workBook=xlrd.open_workbook(excelDir,formatting_info=True)
#2,获取对应的一个表
workSheet = workBook.sheet_by_name(sheetName)
#3,获取单元格的数据
# print(workSheet.row_values(0))#获取第0行--excel行号从0开始
# print(workSheet.col_values(0)) # 获取第0列--excel列号从0开始
# print(workSheet.cell_value(0,0))#获取某一个单元格数据 cell_value(行号,列号)
idx=0 #代表行号的初始值
for one in workSheet.col_values(0):
if caseName in one:
# 条件满足,这一行数据的对应列是需要的数据
resBody = workSheet.cell_value(idx,9)
respData = workSheet.cell_value(idx,11)
resList.append((resBody,respData))
idx += 1
return resList
if __name__ == '__main__':
res = get_excel_data('../data/Delivery_System_V1.5.xls','登录模块','Login')
print(res)
for one in res:
print(one)
v3
#-*- coding: utf-8 -*-
#@File : handle_excel.py
#@Time : 2021/9/8 20:35
#@Author : xintian
#@Email : 1730588479@qq.com
#@Software: PyCharm
#Date:2021/9/8
print()
"""
函数名:def get_excel_data()
版本:v3.0
函数功能:
1- 获取请求的body与预期的响应结果!
2- 可以自定义获取对应的列数据
3- 需要获取测试用例的里面指定的用例运行!
具体方案:
用例筛选!
1- 全部执行 all
2- 分段执行 tc001-tc003 tc005-tc007
3- 随机执行某一个 tc001 tc004 tc008
4- 混合模式:['tc001','tc003-tc007',‘tc009’]
框架层pytest只能定制化执行接口层--跑某一个接口,或者不跑某一个接口
但是:具体的测试用例的挑选,框架做不了!
pytest:是靠一个数据驱动装饰器执行 @pytest.mark.parametrize(挑选出来)
"""
#—————————————————————————————v3.0----------------------------------
import xlrd
def get_excel_data(excelDir,sheetName,caseName,*colName,selectCase=['all']):
resList = []
#1- 加载excel
#formatting_info = True 保持样式
workBook = xlrd.open_workbook(excelDir,formatting_info=True)
#2- 获取对应具体的一个表
workSheet = workBook.sheet_by_name(sheetName)
"""
函数调用者使用列名:标题,URL
代码真正操作读取数据:还是使用列编号!
思路的转化:
把函数调用者的输入的列名--转化---列编号
"""
#----------------------------------------------------
colIndxList = []#函数调用者输入列名,转化后的列编号--列表类型
for i in colName:#遍历用户输入的列名--colName元组
colIndxList.append(workSheet.row_values(0).index(i))
print(colIndxList)
#----------------------------------------------------
#-----------------------挑选用例执行---------------------------
selectList = []#挑选出来的用例
if 'all' in selectCase:#全部执行这个接口的所有用例
selectList = workSheet.col_values(0)
else:#1- 某一个 2- 某一段 ['001','003-006']
for one in selectCase:
if '-' in one:#是一段用例
start,end = one.split('-')# 3,6
for i in range(int(start),int(end)+1):#(3,7)---3,4,5,6
selectList.append(caseName+f'{i:0>3}')#Login3---Login003
else:
selectList.append(caseName+f'{one:0>3}')
#-------------------------------------------------------
idx = 0#代表行号的初始值
for one in workSheet.col_values(0):#获取第0列数据
if caseName in one and one in selectList:
#条件满足,这一行数据的对应列是需要的数据
getColData = []#存放一行对应的很多列的数据
for colIdx in colIndxList:
res = workSheet.cell_value(idx,colIdx)#读取某一个单元格数据
getColData.append(res)
resList.append(getColData)
idx += 1
return resList
if __name__ == '__main__':#ctrl+j 快捷键
configData = ['用例编号','标题','URL','请求参数']
res = get_excel_data('../data/Delivery_System_V1.5.xls','登录模块','Login',*configData,selectCase=['001','003','006','all'])
#print(res)
for one in res:
print(one)
"""
测试反馈:
1- 如果是普通的字符串---不需要转化
2- 是json字符串---需要转化成字典--因为后续的接口需要字典格式
"""