80 lines
2.3 KiB
Python
80 lines
2.3 KiB
Python
"""
|
||
=================================
|
||
Author: Flora Chen
|
||
Time: 2020/3/11 9:08
|
||
-_- -_- -_- -_- -_- -_- -_- -_-
|
||
=================================
|
||
"""
|
||
import openpyxl
|
||
|
||
class HandleExcel:
|
||
"""
|
||
这是一个从excel中读取用例数据并将测试结果写回excel的类
|
||
"""
|
||
def __init__(self, filename, sheetname):
|
||
"""
|
||
实例属性
|
||
:param filename: excel文件的绝对路径
|
||
:param sheetname: excel中我们需要读取的表单的名称
|
||
"""
|
||
self.filename = filename
|
||
self.sheetname = sheetname
|
||
|
||
def read_data(self):
|
||
# 获取工作簿对象
|
||
wb = openpyxl.load_workbook(self.filename)
|
||
|
||
# 获取该工作簿的表单
|
||
sh = wb[self.sheetname]
|
||
|
||
# 获取所有行的数据
|
||
rows_data = list(sh.rows)
|
||
|
||
# 定义一个空列表cases_data来保存所有的用例数据
|
||
cases_data = []
|
||
|
||
# 获取表头,将表头每个单元格中的数据值保存在列表title中
|
||
title = []
|
||
for i in rows_data[0]:
|
||
title.append(i.value)
|
||
|
||
# 获取剩余行的数据,并将剩余行每个单元格的数据值保存在列表values中
|
||
for i in rows_data[1:]:
|
||
values = []
|
||
for j in i:
|
||
values.append(j.value)
|
||
|
||
# 将title跟每一行的values打包成字典并追加到cases_data列表中
|
||
cases_data.append(dict(zip(title, values)))
|
||
|
||
# 关闭保存excel文件
|
||
wb.save(self.filename)
|
||
|
||
# 将用例数据返回
|
||
return cases_data
|
||
|
||
def write_data(self, row, column, value):
|
||
"""
|
||
执行完测试用例后将测试结果写回到excel的类
|
||
:param row: 要写入的行
|
||
:param column: 要写入的列
|
||
:param value: 要写入的内容
|
||
:return:
|
||
"""
|
||
# 获取工作簿对象
|
||
wb = openpyxl.load_workbook(self.filename)
|
||
|
||
# 获取该工作簿的表单
|
||
sh = wb[self.sheetname]
|
||
|
||
# 在指定行列写入数据
|
||
sh.cell(row=row, column=column, value=value)
|
||
|
||
# 关闭保存excel文件
|
||
wb.save(self.filename)
|
||
|
||
if __name__ == '__main__':
|
||
excel = HandleExcel('loginCaseData.xlsx', 'loginData')
|
||
print(excel.read_data())
|
||
# excel.write_data(7, 5, 'flora')
|