- 做接口自动化测试时,测试用例逐渐变多情况下,如果所有测试用例都通过代码管理将会使得代码十分臃肿,而且维护成本会很高;
- 所以我们一般会通过Excel去管理所有的测试用例,而openpyxl库提供了访问Excel的方法
一、openpyxl介绍
- 一个Python库,用于读取/写入Excel 2010 xlsx 、xlsm 、xltx 、xltm 文件
- 不能操作 xls 文件
二、openpyxl简单概念
- Workbook:excel工作表
- Sheet:工作表中的一张表
- Cell:其中的一个单元格
- 简单步骤:打开Workbook,选中Sheet,操作Cell
三、使用场景
数据驱动ddt,所有的方法和业务逻辑保持不变,变的是你的接口的数据
- 1.自动化测试用例(excel保存接口数据)
- 2.自动化测试用例(数据库保存接口数据),学习成本高一些,熟悉数据库操作;
- 3.办公自动化(财务)
四、具体使用
1.安装openpyxl
pip install openpyxl
2.读取excel数据 1):打开excel:创建表对象 2):获取表单:获取表单对象 3):查看单元格:获取单元格对象 4):获取单元格数据:获取单元格内容 5):关闭excel:表:关闭excel
3.写excel数据
基本使用案例
import openpyxl
wb_obj = openpyxl.load_workbook(filename="test.xlsx")
sheet_obj = wb_obj["can"]
cell_obj = sheet_obj["B6"]
result = cell_obj.value
print(result)
wb_obj.close()
执行结果
五、参数解释
wb_obj = openpyxl.load_workbook(filename="test.xlsx")
获取表单对象
sheet_obj = wb_obj["can"]
res=wb_obj.sheetnames
print(res)
sheet_obj = wb_obj["can"]等价于wb.get_sheet_by_name("sheet的名字")
六、访问cell
cell_obj=sheet_obj["C6"]
res=cell_obj.value
print(res)
cell_obj=sheet_obj.cell(row=3,column=3)
print(cell_obj.value)
import openpyxl
wb_obj = openpyxl.load_workbook("test.xlsx")
sheet_obj = wb_obj["can"]
cell_obj = sheet_obj.cell(row=3, column=3)
print(cell_obj.value)
results = sheet_obj.iter_rows(min_row=1, max_row=4, min_col=1, max_col=3, values_only=True)
for lis in results:
print(lis)
"""
min_row=None:行切片的起始索引,默认为1
max_row=None:行切片的结束索引,默认为1
min_col=None:列切片的起始索引,默认为1
max_col=None列切片的结束索引,默认为1
values_only=False:是否直接返回对象的属性(数据还是对象),True:返回数据,False:返回对象
"""
results1 = sheet_obj.iter_cols(min_row=1, max_row=2, min_col=1, max_col=2, values_only=True)
for lis1 in results1:
print(lis1)
运行结果
湖北3
(1, '北京1', '湖北1')
(2, '北京2', '湖北2')
(3, '北京3', '湖北3')
(4, '北京4', '湖北4')
(1, 2)
('北京1', '北京2')
data = tuple(sheet_obj.columns)
data = tuple(sheet_obj.rows)
data = tuple(sheet_obj.values)
print(data)
print(data[1])
wb_obj.close()
七、openpyxl写入数据
sheet=wb_obj.active
sheet.cell(row=1,column=1,value="6666")
wb_obj.save("test.xlsx")
执行结果
知识点
- 写入数据的文件需要是可写文件,需要已关闭;
- 若打开着excel的话无法写入会报 PermissionError: [Errno 13] Permission denied: ‘XXXXX.xlsx’
- 其实就是四部曲:获取excel - 执行
wb_obj.active - 赋值操作 -保存文件; - 赋值操作还可以是
sheet["A1"] = "6666" ,等价于上面第三行代码; - save() 会覆盖原有文件,不会有提醒
|