为了读取用例数据方便,封装了一个工具类。目前用例数据使用excel文档保存,工具类使用openpyxl三方库,对读取、写入数据的方法进行了再次封装。
以下是V1版本,主要功能是读取和写入数据,没有做异常处理,默认能正确使用类中的方法。会在后续完善。
# -*- coding:UTF-8 -*-
# @author : Joker
# @Time : 2019/12/24
# @IDE : PyCharm
# @Version : Python 3.7
"""
读取EXCEL文件中的用例数据
"""
import os
import openpyxl
class CaseData:
"""使用类属性存放测试用例数据"""
pass
class Readexcel:
"""读取EXCEL文件"""
def __init__(self, filename, sheetname):
self.filename = filename
self.sheetname = sheetname
def open(self):
self.wb = openpyxl.load_workbook(self.filename)
self.sh = self.wb[self.sheetname]
def close(self):
self.wb.close()
def save(self):
self.wb.save(self.filename)
def get_data(self):
"""输出字典格式的测试用例数据列表"""
self.open()
max_row = self.sh.max_row
max_column = self.sh.max_column
data_list = []
for row in range(1, max_row + 1):
data = []
for column in range(1, max_column + 1):
value = self.sh.cell(row=row, column=column).value
data.append(value)
data_list.append(data)
cases = []
title = data_list[0]
for data in data_list[1:]:
case = dict(zip(title, data))
cases.append(case)
self.close()
return cases
def get_obj_data(self):
"""输出类属性格式的测试用例数据列表"""
cases_obj = []
cases = self.get_data()
for case in cases:
data = CaseData()
for key, value in case.items():
setattr(data, key, value)
cases_obj.append(data)
self.close()
return cases_obj
def write_data(self, row, column, value):
"""写入数据到EXCEL"""
self.open()
self.sh.cell(row=row, column=column, value=value)
self.save()
self.close()
if __name__ == "__main__":
filename = os.path.join(DATA_DIR, "apicases.xlsx")
cases = Readexcel(filename, "login")
data = cases.get_data()
print(data)
提供了两种保存用例数据的方法,一种是把读取到的用例数据保存到字典中get_data(),另一种是把读取到的用例数据保存到类属性中get_obj_data(),配合改造的HTMLTestRunner库一起使用。