- 该工具类利用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()