python-openpyxl模块使用

1、openpyxl模块介绍

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()
相关文章
相关标签/搜索