openpyxl是读写Excel的python库,是一个比较综合的工具,可以同时读取和修改Excel文档,在自动化测试实现过程当中利用openpyxl读取excel测试用例表中的数据,再结合ddt模块可以高效提高测试效率,减小代码冗余度。python
1.openpyxl中有三个不一样层次的类,每个类都有各自的属性和方法:app
* Workbook是一个excel工做表 * Worksheet是工做表中的表单sheet * cell表单中的一个格
2..打开excel的通常场景ide
打开或者建立一个Excel须要建立一个Workbook对象工具
获取一个表则须要先建立一个Workbook对象,而后使用该对象的方法来获得一个Worksheet对象测试
通常流程以下:
第一步:打开excel
workbook1=load_workbook('test_case.xlsx')
第二步:定位表单(test_data)
sheet=workbook1['test_data']
第三步:操做excel的test_data表单
一、定位单元格(cell),根据行列读取测试数据
例如:
data=sheet.cell(3,2).value
print(data)
注意:excel
excel 存储的数据,数字仍是数字:int—>int、 float—>float 、其余类型—>strcode
使用eval(数据) 将str类型转换为他原来的类型对象
统计行和列
max_row=sheet.max_row
max_cow = sheet.max_columnip
下面是我本身封装了一个Handle类,功能大体以下:
1.读取excel表格中的测试用例信息,压缩成字典格式
2.将自动化测试结果写入excel,并保存测试结果
3.此模块能够做为通用功能使用,在之后的自动化测试中若是有须要可直接导入进行使用
注意:保存的时候要确保你当前的excel文件是关闭状态文档
代码展现:
from openpyxl import load_workbook import os """ 类属性:文件路径,sheet表单,工做簿对象 类方法: 1.打开文件2.获取表头信息 3.获取文件内容 """ class Handle: def __init__(self, filepath, sheet): self.wb = load_workbook(filepath) self.sh = self.wb[sheet] #获取全部的行对象 def get_all_rows_obj(self): rows = list(self.sh.rows) return rows #获取表头信息 def get_title(self): rows = self.get_all_rows_obj() titles = [] for item in rows[0]: titles.append(item.value) return titles # 获取全部case信息,与表头信息titles压缩成字典 def get_all_caseinfo(self): rows = self.get_all_rows_obj() titles = self.get_title() cases = [] for row in rows[1:]: values = [] for item in row: values.append(item.value) cases.append(dict(zip(titles, values))) print(cases) return cases #将测试结果写入excel def write_result_to_excel(self,row,col,value): self.sh.cell(row, col).value = value #保存测试结果 def save_result(self,file_path): self.wb.save(file_path) if __name__ == '__main__': """ 1.获取文件路径 """ cur_path = os.path.dirname(__file__) case_path = os.path.join(os.path.dirname(cur_path), "resource\\login_case.xlsx") print(case_path) handle = Handle(case_path, "Sheet1") handle.get_all_caseinfo()