1、自動化測試時常常用例是放在一個單獨的excel文件進行管理的,那么就會涉及到怎么將用例讀取出來
2、如下是用例中要用到的字段
3、對openpyxl進行封裝讀取表單內容,寫入用例運行后的預期與結果
import openpyxl
class DoExcel:
def __init__(self,file_name,sheet_name): # file_name為你文件的路徑,sheet_name為excel中表單名稱
self.file_name =file_name
self.sheet_name = sheet_name
# 將表格中的第一行的值作為鍵,其他行作為值,已字典的形式存在列表中
def get_cases(self):
wb =openpyxl.load_workbook(self.file_name)
sh =wb[self.sheet_name]
cases = []
# 獲取最大行號
rows =sh.max_row
# 獲取最大列號
cols = sh.max_column
for row in range (2,rows+1):
case ={}
for col in range (1,cols+1):
case[sh.cell(1,col).value] = sh.cell(row,col).value
cases.append(case)
wb.save(self.file_name)
wb.close()
return cases
# row是你要傳的行號,actual是你要斷言的值,result是你要寫入的用例執行結果
def write_result(self,row,actual,result):
wb = openpyxl.load_workbook(self.file_name)
sh = wb[self.sheet_name]
sh.cell(row=row,column=8).value =actual # 在第幾行幾列寫入你的斷言值
sh.cell(row=row, column=9).value = result # 在第幾行幾列寫入你的用例運行結果,也就是拿你的斷言值去與運行后獲取到的某個值進行對比
wb.save(self.file_name)
wb.close()
4、實例化調用封裝好的類
if __name__ == '__main__':
excel =DoExcel(file_name,"sheet_name") # file_name為你文件的路徑,sheet_name為excel中表單名稱
datas =excel.get_cases()
if student_name[0] == data["name"]:
excel.write_result(data["id"]+ 1, student_name[0], "pass") # id為什么要加1,是因為表格中第一行是title,要在第二行寫數據的時候,其實他的id是1,不過你的id也可以直接從2開始就不用加1了
else:
excel.write_result(data["id"] + 1, student_name[0], "fail")
5、這是讀取出來的excel中的內容,列表中嵌套字典

6、用例運行的結果(此處運行用例用到了unittest框架省略),表格中多了兩列數據,就是之前類中封裝的寫入值
