此篇通過項目來實現怎樣導入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中