python使用openpyxl讀取excel文件


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框架省略),表格中多了兩列數據,就是之前類中封裝的寫入值


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM