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框架省略),表格中多了两列数据,就是之前类中封装的写入值


 

posted on 2020-04-28 17:21  小小小、小鱼儿  阅读(1451)  评论(0编辑  收藏  举报

导航