上次咱們已經將requests庫封裝成咱們想要的樣子了,咱們的接口自動化已經完成了最開始的一步了,接下來咱們須要完成咱們相應的其餘模塊的封裝,下面簡單介紹下咱們在接口自動化須要用到的模塊吧
在接口自動化中咱們經常使用的模塊有requests、openpyxl、pymysql、configparser、ddt、HTMLTestRunner等一些模塊
下面介紹下openpyxl是怎麼用的吧mysql
安裝方式sql
pip install openpyxlapp
使用方式
直接看代碼塊吧,詳細描述在代碼塊裏面的註釋會寫的函數
1 import openpyxl 2 3 4 # 獲取wb的對象 5 wb = openpyxl.load_workbook(r"D:\test.xlsx") 6 # 獲取工做表 7 sheet = wb["test1"] 8 # 讀取改工做表的最大行 9 print(sheet.max_row)
上面的只是一個openpyxl的簡單用法,獲取Excel裏面的數據我直接封裝到類裏面了
下面的封裝方法都是適用任何項目的spa
import openpyxl class ReadExcel: """讀取Excel""" def __init__(self, file_path, sheet_name): self.file_path = file_path self.sheet_name = sheet_name def open(self): """獲取wb對象""" self.wb = openpyxl.load_workbook(self.file_path) def get_sheet(self): """ 獲取sheet """ self.open() sheet = self.wb[self.sheet_name] self.wb.close() return sheet def get_cell(self, row, col): """ 獲取單元格對象 """ object = self.get_sheet().cell(row, col) self.wb.close() return object def get_cell_value(self, row, col): """ 獲取某一個單元格的值 """ data = self.get_cell(row, col).value self.wb.close() return data def read(self): """讀取全部數據""" # 運用列表推導式獲取title headers = [i.value for i in self.get_sheet()[1]] row_data = [] for row in range(2, self.get_sheet().max_row+1): data = [] for col in range(1, self.get_sheet().max_column+1): data.append(self.get_cell_value(row, col)) # 用zip函數將兩個列表組合成字典 data_info = dict(zip(headers, data)) row_data.append(data_info) self.wb.close() return row_data def write(self, row, col, values): """ 回寫數據 :param row: :param col: :param values: :return: """ self.get_cell(row, col).value = values self.save() return self.get_cell(row, col).value def save(self): """ 保存 :return: """ self.wb.save(self.file_path)
讀取全部的數據展現是這樣的:code
其實在作Excel的數據回寫,通常是採用靜態方法,我上面沒有采用靜態方法的緣由是由於個人每個wb對象使用完以後都是進行關閉的,因此不會有什麼影響,可是若是說你的wb對象是在init方法中獲取,建議仍是回寫操做用靜態方法。
--------------------------------------------------------------------------------------------------------------------------------------學無止境,歡迎你們提意見,共同交流進步----------------------------------------------------------------------------------------------------------------------------------------------------------------------對象