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


  • 相关阅读:
    Ddr2,ddr3,ddr4内存条的读写速率
    Ddr2,ddr3,ddr4内存条的读写速率
    【VS开发】获取CPU tick tick 周期
    【VS开发】获取CPU tick tick 周期
    【VS开发】malloc申请内存错误分析
    【VS开发】malloc申请内存错误分析
    【VS开发】Return与Exit的区别
    【VS开发】Return与Exit的区别
    【VS开发】C/C++预编译命令
    【VS开发】C/C++预编译命令
  • 原文地址:https://www.cnblogs.com/xintiaoab/p/12795581.html
Copyright © 2020-2023  润新知