随着项目的持续迭代,新增的接口会越来越多,关联性也越强,如果这么多数据都单独存放在各自的测试用例中,那维护将会是一个巨大的工程,费时费力,为了更有效的管里数据和代码,现在的框架基本都做了数据和代码的解耦处理。
将测试数据独立存放起来管理也是最有效的解耦操作,这里就来讲讲如何通过Excel来管理测试数据,管理不仅仅是存放,同时还有读取、写入、保存、关闭等操作。
一般来说,最好把一个项目存放在一个Excel文件里, 每个模块独占一个sheet页,这样方便我们对用例数据做查找和修改,还是以初识Unittest那篇随笔的功能点【判断两个数是否相等】做示例,
一、模块
使用模块:openpyxl
由于这不是Python内建模块,请在终端使用命令:pip install openpyxl 进行安装。
注意:openpyxl只能操作.xlsx后缀的Excel文件
二、数据:
将数据整理到Excel文件中,如下图,
扫描二维码关注公众号,回复:
9287525 查看本文章
三、封装Excel操作类
class OperateExcel: def __init__(self, file_path, sheet_name): """ 初始化方法,打开excel文件,获取sheet表对象 :param file_path:文件所在路径 :param sheet_name:表名称 """ self.excel_file = openpyxl.load_workbook(file_path) self.sheet = self.excel_file[sheet_name] def read_data(self): """读取sheet表数据,返回一个包含字典记录的列表""" rt_datas = [] # 按行得到所有单元格 rows_data = list(self.sheet.rows) # 保存第一行表头到titles列表 titles = [] for title in rows_data[0]: titles.append(title.value) # 读取用例数据并和标题聚合成字典 for row_data in rows_data[1:]: datas = [] for data in row_data: datas.append(data.value) rt_datas.append(dict(zip(titles, datas))) return rt_datas
以上只展示了数据读取和转换的具体过程,还应有数据回写、文件保存、关闭等操作,这里就不一一列举了。
在实际应用中,数据的存储方式多种多样,除了Excel外,常用的还可以保存于文本,py文件,数据库等等