此篇通过项目来实现怎样导入Excel表格中的测试用例
一、编写一个读取Excel数据的函数
功能:传一个Excel的位置和第几个工作表,返回数据列表
名词:workBook==工作簿==Excel
workSheet==工作表==sheet
Excel表格中从0开始读取
导入:import xlrd
步骤:
定义一个函数:
def readExcel(filePath,sheet_index):
01:打开Excel,获取【workBook】对象
workBook = xlrd.open_workbook(filePath)#路径
02:从工作簿中,获取【workSheet】对象
第一种方法: workSheet = workBook.get_sheet(sheet_index)#第几个工作表(索引) 第二种方法: workSheet = workBook.sheet_by_name('工作表名') 第三种方法: workSheet = workBook.sheet_by_index(sheet_index) 第四种方法: workSheet=workBook.sheets()[索引]
获取总行数:
nrows = workSheet.nrows
获取某行数据:
row=workSheet.row_values(行号)
03:对【workSheet】工作表进行循环-逐型行取出数据,放入列表中
retList=[] for i in range(1,nrows): #range左包含右不包含 读45条记录 #返回的是一个list,得到的是第几行数据 oneRow = workSheet.row_values(i) retList.append(oneRow) return retList
04:返回数据列表
List=readExcel('测试用例路径',0) print(list)
二、发送Excel表格数据
功能:传一行Excel数据行(列表格式),返回请求结果(字典格式)
import json from API项目.lib.courseLIb import add,delete,modify from API项目.lib.excelManger import readExcel import time import sleep def SendCourseRequest(row): # print(row) # 传入的是一行数据,也就是一个测试用例 colus5 = row[4] # 第5列的值 # # 第6列的值,用json.loads方法,把字符串转化为字典格式 colus6 = json.loads(row[5]) # ret = None if colus5 == 'add': # print(colus6['name'])# 课程名称 courseName = colus6['name'] # 获取课程名称 # 把关键字:{{courseName}} 替换成时间戳 courseName = courseName.replace('{{courseName}}', str(int(time.time() * 100))) ret = add(courseName, colus6['desc'], colus6['display_idx']) # print(ret) test = json.loads(row[6]) if (ret['retcode']==test['code']): print(row[0],'测试通过') # elif colus5 == 'list': # ret = list(colus6['pagenum'], colus6['pagesize']) # elif colus5 == 'delete': # ret = delete(colus6['id']) # return ret list=readExcel(r'E:\bijizongjie\API项目\data\教管系统-测试用例V1.2.xls',0) # print(list) for i in range(0,len(list)): SendCourseRequest(list[i]) time.sleep(1)
三、写入测试结果到Excel
01:调用函数读取测试用例
02:调用《课程管理》函数执行
from API项目.lib.excelManger import readExcel from API项目.lib.sendCourseRequest import SendCourseRequest import time #1-读取测试用例 list=readExcel(r'E:\bijizongjie\API项目\data\教管系统-测试用例V1.2.xls',0) # print(list) #2-执行测试用例 dictBody=[] for i in range(0,len(list)): row=list[i] dictBody=SendCourseRequest(row) dictBody.append(dictBody) time.sleep(1)
03:执行结果写回Excel
导入:from xlutils.copy import copy
1):复制一个全新的Excel
def getNewExcel(filePath): #1-1打开Excel,得到workBook对象 workBook = xlrd.open_workbook(filePath) #1-2 复制一个全新的工作簿 workBookNew = copy(workBook) return workBookNew 调用 workBookNew = getNewExcel(‘路径’)
保证输出的Excel表格格式存在:
加入一个参数:formattings_info=True
workBook = xlrd.open_workbook(filePath,formattings_info = True)
2):在新的Excel中得到第一个工作表
workSheetNew= workBookNew.sheet_by_index(0)
3):执行用例,在第7、8列写内容
for i in range(0,len(list)): row=list[i] dictBody=SendCourseRequest(row) time.sleep(1) test = json.loads(row[6]) if (dictBody['retcode'] == test['code']): print(row[0], '测试通过') workSheetNew.write(i+1,7,'PASS') else: print('row[0]','测试不通过') workSheetNew.write(i + 1,7, 'FAIL') workSheetNew.write(i + 1,8, dictBody['reason'])
4):保存
workBookNew.save('路径')
总结
1-demo==评审接口文档
2-编写测试用例
3-执行Excel中的测试用例
3.1定义一个函数,读取测试用例,返回列表
3.2循环列表,发送请求-返回结果(还调用了之前封装的函数)
3.3返回的结果需要写入Excel中