python介面自動化測試 - openpyxl基本使用
阿新 • • 發佈:2020-01-30
前言
- 當你做介面自動化測試時,測試用例逐漸變多情況下,如果所有測試用例都通過程式碼管理將會使得程式碼十分臃腫,而且維護成本會很高;
- 所以我們一般會通過Excel去管理所有的測試用例,而openpyxl庫提供了訪問Excel的方法
openpyxl簡單介紹
- 一個Python庫,用於讀取/寫入Excel 2010 xlsx 、xlsm 、xltx 、xltm 檔案
- 不能操作 xls 檔案
openpyxl簡單概念
- Workbook:excel工作表
- Sheet:工作表中的一張表
- Cell:其中的一個單元格
- 簡單步驟:開啟Workbook,選中Sheet,操作Cell
openpyxl簡單使用
1 import openpyxl 2 3 if __name__ == '__main__': 4 path = 'F:/imocInterface/case/imooc.xlsx' 5 # 讀取excel檔案 6 workbook = openpyxl.load_workbook(path) 7 # 讀取所有sheet 8 sheet = workbook.get_sheet_names() 9 # 獲取某個sheet 10 sheet = workbook[sheet[0]] 11 # 獲取某個cell的值 12 cell_val = sheet.cell(row=2, column=2).value 13 print(cell_val)
包含知識點
- 呼叫 load_workbook() 等同於呼叫 open()
- 第8、10行程式碼可能濃縮成一行程式碼 workbook.get_sheet_by_name("sheet的名字") ,前提是你得知道sheet的命名
- cell(row, column, value=None) 三個引數分別是:行,列,值;若設定了value相當於賦值操作,會覆蓋原本的值
openpyxl操作單元格
訪問單個cell
1 # 方式一:獲取A4單元格的值 2 cell_val = sheet['A4'].value 3 # 方式二:獲取第二行,第二列的單元格的值 4 cell_val = sheet.cell(row=2, column=2).value
訪問多個cell
1 # A1-B3的單元格 共6個 2 cell_range = sheet['A1':'B3'] 3 4 # A1-A3的單元格 共3個 5 cell_range = sheet['A1:A3'] 6 7 # 第十行的單元格 8 cell_range = sheet[10] 9 10 # 第1、2行的單元格 11 cell_range = sheet[1:2]
注意:以上方法返回的是都是cell物件組成tuple
獲取指定範圍的cell
1 # 返回行 2 for col in sheet.iter_rows(min_row=1, min_col=1, max_col=3, max_row=2): 3 for cell in col: 4 print(cell) 5 6 # 返回列 7 for col in sheet.iter_cols(min_row=1, min_col=1, max_col=3, max_row=2): 8 for cell in col: 9 print(cell)
獲取指定範圍cell的測試結果
# 返回行 <Cell 'Sheet1'.A1> <Cell 'Sheet1'.B1> <Cell 'Sheet1'.C1> <Cell 'Sheet1'.A2> <Cell 'Sheet1'.B2> <Cell 'Sheet1'.C2> # 返回列 <Cell 'Sheet1'.A1> <Cell 'Sheet1'.A2> <Cell 'Sheet1'.B1> <Cell 'Sheet1'.B2> <Cell 'Sheet1'.C1> <Cell 'Sheet1'.C2>
官方提醒:出於效能考慮, sheet.iter_cols() 方法不支援在只讀模式使用
獲取sheet內所有行和列的cell
1 # 以列的形式,獲取sheet的全部cell 2 data = tuple(sheet.columns) 3 4 # 以行的形式,獲取sheet的全部cell 5 data = tuple(sheet.rows) 6 7 # 獲取所有資料 8 data = tuple(sheet.values) 9 # 指定返回某一行資料 10 print(data[2])
注意: sheet.rows 返回的是一個物件,需要用 tuple() 才能將物件轉換成tuple
官方提醒:出於效能考慮, sheet.cloumns 方法不支援在只讀模式使用
獲取sheet的行數、列數
1 # 獲取sheet最大行 2 data = sheet.max_row 3 4 # 獲取sheet最多列 5 data = sheet.max_column 6 7 # 獲取sheet最小行 8 data = sheet.min_row 9 10 # 獲取sheet最小列 11 data = sheet.min_column
openpyxl寫入資料
1 workbook = openpyxl.load_workbook(path) 2 sheet = workbook.active 3 sheet.cell(row=2, col=2, value="213") 4 workbook.save(filename=path)
包含知識點
- 寫入資料的檔案需要是可寫檔案,需要已關閉;若開啟著excel的話無法寫入會報 PermissionError: [Errno 13] Permission denied: 'XXXXX.xlsx'
- 其實就是四部曲:獲取excel - 執行 workbook.active - 賦值操作 - 儲存檔案
- 賦值操作還可以是 sheet["B2"] = "213" ,等價於上面第三行程式碼
- save() 會覆蓋原有檔案,不會有提醒
&n