分享

python接口自动化学习笔记(封装方法用于读取excel)

 昵称71011036 2020-08-10
from collections import namedtuple from openpyxl import load_workbook # 1.如何将一些操作(Excel读写)进行封装?(写出封装的思路) # a、加载excel文件,定位表单; # b、定位单元格,读取所有用例数据; # c、遍历所有单元格数据,或使用ddt; # d、写入指定单元格数据,保存excel文件; class ReadExcelData(object): """封装读取excel表单数据的工具类""" def __init__(self, file_path, sheet_name=None): """ 初始化openpy加载excel文件 定位表单及初始化参数 """ self.file_path = file_path self.sheet_name = sheet_name # 打开已存在Excel文件 self.wb = load_workbook(self.file_path) #打开指定的excel # 定位表单 self.ws = self.wb[self.sheet_name] if self.sheet_name is not None else self.wb.active # 获取第一个表单 self.sheet_head_tuple = tuple(self.ws.iter_rows(max_row=self.ws.min_row, values_only=True))[0] self.cases_list = [] # 定义一个存放元组的对象 self.Cases = namedtuple("cases", self.sheet_head_tuple) # 创建一个命名元组类 def get_all_cases(self): """ 获取excel所有测试用例 """ for tuple_data in self.ws.iter_rows(min_row=self.ws.min_row + 1, values_only=True): # 每次遍历,返回由某行所有单元格值组成的一个元组 self.cases_list.append(self.Cases(*tuple_data)) return self.cases_list def get_one_case(self, row): """ 获取一条case :return一个case对象 """ if isinstance(row, int) and (self.ws.min_row + 1 <= row <= self.ws.max_row): return tuple(self.ws.iter_rows(min_row=row, max_row=row, values_only=True))[0] else: print("传入行号不正确,应为大于1的整数!") def write_file(self, row, actul_result, result_status): ''' 执行用例结果写入excel,并保存 ''' if isinstance(row, int) and (self.ws.min_row + 1 <= row < self.ws.max_row): self.ws.cell(row=row, column=self.ws.max_column - 1, value=actul_result) self.ws.cell(row=row, column=self.ws.max_column, value=result_status) self.wb.save(self.file_path) else: print("处理失败!") if __name__ == '__main__': file_path = u'E:\\heguanghua\\python\\接口自动化\\api.xlsx' sheet_name = 'Sheet1' res = ReadExcelData(file_path,sheet_name).get_all_cases() print(res) print('================================================') re = ReadExcelData(file_path,sheet_name).get_one_case(2) print(re)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约