import os
from openpyxl import load_workbook
from scripts.handle_path import DATA_PATH
class Testcase:
pass
class HandleExcel:
def __init__(self, filename, sheetname=None):
self.filename = os.path.join(DATA_PATH, filename)
self.sheetname = sheetname
def read_data(self):
"""
读数据
:return:
"""
wb = load_workbook(self.filename)
if self.sheetname is None:
ws = wb.active
else:
ws = wb[self.sheetname]
testcases_list = []
headers_list = [] #存放表头信息
for row in range(1,ws.max_row + 1):
one_testcase = Testcase() #创建用例对象
for column in range(1,ws.max_column+1):
one_cell_value = ws.cell(row,column).value
if row == 1:
# 将获取的表头,转化为字符串并添加至headers_list中
headers_list.append(str(one_cell_value))
else:
#获取表头字符串数据
key = headers_list[column-1]
if key == "actual":
# 设置存放实际响应报文所在列的列号actual_column属性
setattr(one_testcase,"actual_column",column)
elif key == "result":
# 设置存放用例执行结果所在列的列号result_column属性
setattr(one_testcase, "result_column", column)
setattr(one_testcase, key, one_cell_value)
if row != 1:
# 设置当前用例所在的行号row属性
setattr(one_testcase,"row",row)
testcases_list.append(one_testcase)
return testcases_list
def write_data(self,one_testcase,actual_value,result_value):
wb = load_workbook(self.filename)
if self.sheetname is None:
ws = wb.active
else:
ws = wb[self.sheetname]
#写入
ws.cell(one_testcase.row,one_testcase.actual_cloumn,value=actual_value)
ws.cell(one_testcase.row, one_testcase.result_column, value=result_value)
wb.save(self.filename)