工具层handle_excel

发布于:2025-03-21 ⋅ 阅读:(35) ⋅ 点赞:(0)
  • 该工具类利用openpyxl的load_workbook加载Excel,通过iter_rows按行迭代数据,将表头和用例数据用zip+dict组合成字典,通过list.append将字典(单条测试用例)追加到列表中,从而封装Excel数据解析工具。
模块/类 方法/属性 使用场景描述
openpyxl load_workbook() 加载指定的 Excel 文件,返回一个 Workbook 对象。
Workbook 对象 .sheetnames(属性) 获取 Excel 文件中所有 Sheet 的名称列表。
[sheet_name](通过键访问) 根据 Sheet 名称获取对应的 Worksheet 对象。
.iter_rows(values_only=True) 按行迭代 Sheet 中的数据,values_only=True 表示返回单元格的实际值。
.close() 关闭 Excel 文件,释放资源。
Python 内置函数 list() 将迭代器(如 iter_rows 的结果)转换为列表。
zip() 将表头和数据按列组合,生成键值对。
dict() 将 zip 生成的键值对转换为字典,形成单条用例数据。
list 对象 .append() 将单条用例数据(字典)追加到结果列表中。
from openpyxl import load_workbook


class HandleExcel:
    def __init__(self,file_name):  #file_name: 测试用例文件名称(绝对路径)
        self.wb_obj = load_workbook(filename=file_name) #load_workbook加载excel

        #获取所有excel中sheet的名称
        self.sheet_names = self.wb_obj.sheetnames

    def get_excel_test_cases(self,sheet_name):  #sheet_name: excel中sheet名称
        #临时变量存放数据
        cases_list = []  
        #获取指定表单对象
        sheet_obj = self.wb_obj[sheet_name]
        #iter_rows迭代所有行数据,按行读取封装成list输出结果类似于[('id','title'),(1,'登陆成功')],values_only是False返回对象,True返回单元格对应数据,datas获取表单sheet中所有数据
        datas = list(sheet_obj.iter_rows(values_only=True))
        #获取表头
        case_title = datas[0] 
        #获取表数据
        case_datas  = datas[1:] 
        #遍历每一行数据
        for case in case_datas:
            #zip(key,val)把两个元素压缩在一起,再把每一行数据使用dict转换成字典类型,zip函数是python的内置函数
            result = dict(zip(case_title,case))
            cases_list.append(result)
        self.close_file()
        return cases_list

    def close_file(self):
        #关闭excel
        self.wb_obj.close()  

if __name__ == '__main__':
      #存放excel测试数据的文件名(放本目录下的路径)
      cl = HandleExcel(file_name="case_data.xlsx",sheet_name="login")
      cl.get_excel_test_cases()