openpyxl是讀寫Excel的python庫,是一個比較綜合的工具,可以同時讀取和修改Excel文檔,在自動化測試實現過程當中利用openpyxl讀取excel測試用例表中的數據,再結合ddt模塊可以高效提高測試效率,減小代碼冗餘度。python
1.openpyxl中有三個不一樣層次的類,每個類都有各自的屬性和方法:app
* Workbook是一個excel工做表 * Worksheet是工做表中的表單sheet * cell表單中的一個格
2..打開excel的通常場景ide
打開或者建立一個Excel須要建立一個Workbook對象工具
獲取一個表則須要先建立一個Workbook對象,而後使用該對象的方法來獲得一個Worksheet對象測試
通常流程以下:
第一步:打開excel
workbook1=load_workbook('test_case.xlsx')
第二步:定位表單(test_data)
sheet=workbook1['test_data']
第三步:操做excel的test_data表單
一、定位單元格(cell),根據行列讀取測試數據
例如:
data=sheet.cell(3,2).value
print(data)
注意:excel
excel 存儲的數據,數字仍是數字:int—>int、 float—>float 、其餘類型—>strcode
使用eval(數據) 將str類型轉換爲他原來的類型對象
統計行和列
max_row=sheet.max_row
max_cow = sheet.max_columnip
下面是我本身封裝了一個Handle類,功能大體以下:
1.讀取excel表格中的測試用例信息,壓縮成字典格式
2.將自動化測試結果寫入excel,並保存測試結果
3.此模塊能夠做爲通用功能使用,在之後的自動化測試中若是有須要可直接導入進行使用
注意:保存的時候要確保你當前的excel文件是關閉狀態文檔
代碼展現:
from openpyxl import load_workbook import os """ 類屬性:文件路徑,sheet表單,工做簿對象 類方法: 1.打開文件2.獲取表頭信息 3.獲取文件內容 """ class Handle: def __init__(self, filepath, sheet): self.wb = load_workbook(filepath) self.sh = self.wb[sheet] #獲取全部的行對象 def get_all_rows_obj(self): rows = list(self.sh.rows) return rows #獲取表頭信息 def get_title(self): rows = self.get_all_rows_obj() titles = [] for item in rows[0]: titles.append(item.value) return titles # 獲取全部case信息,與表頭信息titles壓縮成字典 def get_all_caseinfo(self): rows = self.get_all_rows_obj() titles = self.get_title() cases = [] for row in rows[1:]: values = [] for item in row: values.append(item.value) cases.append(dict(zip(titles, values))) print(cases) return cases #將測試結果寫入excel def write_result_to_excel(self,row,col,value): self.sh.cell(row, col).value = value #保存測試結果 def save_result(self,file_path): self.wb.save(file_path) if __name__ == '__main__': """ 1.獲取文件路徑 """ cur_path = os.path.dirname(__file__) case_path = os.path.join(os.path.dirname(cur_path), "resource\\login_case.xlsx") print(case_path) handle = Handle(case_path, "Sheet1") handle.get_all_caseinfo()