标签:关于 return bsp auto replace 流程 response cut style
本文档介绍如何使用excel管理接口测试用例并一键执行的实现方式,其中包括 python 读写excel, request库的基本操作,接口用例的设计
用例字段描述
# 组装本条用例后的数据 data = { ‘data‘: {‘ip‘: ‘112.112.11.11‘, ‘key‘: ‘key‘}, ‘response‘: { ‘resultcode‘: ‘200‘, ‘reason‘: ‘查询成功‘, ‘result‘: {‘Country‘: ‘中国‘, ‘Province‘: ‘云南省‘, ‘City‘: ‘昆明市‘, ‘Isp‘: ‘电信‘}, ‘error_code‘: 0 }, ‘file‘: ‘timg.txt‘}
# 取值表达式 var_ip=data.ip,var_key=data.key # 被取值数据 data = { ‘data‘: {‘ip‘: ‘112.112.11.11‘, ‘key‘: ‘key‘}, ‘response‘: { ‘resultcode‘: ‘200‘, ‘reason‘: ‘查询成功‘, ‘result‘: {‘Country‘: ‘中国‘, ‘Province‘: ‘云南省‘, ‘City‘: ‘昆明市‘, ‘Isp‘: ‘电信‘}, ‘error_code‘: 0 }, ‘file‘: ‘timg.txt‘} # 取值结果 {‘var_ip‘: ‘112.112.11.11‘, ‘var_key‘: ‘key‘}
# 检查表达式 resultcode equal 200,result.Isp equal 电信 # 检查数据 {"resultcode":"200","reason":"查询成功","result":{"Country":"中国","Province":"云南省","City":"昆明市","Isp":"电信"},"error_code":0} # 检查结果 检查点>实际结果:200等于预期结果:200 pass 检查点>实际结果:电信等于预期结果:电信 pass
接口用例含有字段及描述
编号 : int(唯一) 用例id
模块 : str 用例所属模块描述,例如 用户管理之类的一级功能
标题 : str 用例简单描述,例如 新增用户之类的二级功能
测试点 : str 用例测试功能,例如 正确用户数据正常新增用户成功
级别 : str 用例重要程度,范围有(P0,P1,P2,P3),这里依照公司对用例级别的划分
执行顺序 : int(唯一) 这里可以设置用例的执行顺序, 1 为最优先执行,上不封顶
是否执行 : str 用例是否需要执行,范围有(Y,y,N,n),大Y小y代表该条用例需要执行,空或者其它都代表不执行
被依赖用例 : str 本条用例是否被其它用例依赖了测试数据
需依赖数据 : str 本条用例需要依赖的数据
依赖数据取值表达式 : str 用例执行会根据此表达式,自动去匹配 需依赖数据中的内容
依赖数据取值结果 : str 根据需依赖数据取值表达式 取值后自动存入,存入示例 {‘var_ip’: ‘112.112.11.11’, ‘var_key’: ‘key’}
接口地址 : str 接口地址
请求头 : str 请求头
请求方式 : get,post,若需要其它可自行添加
请求数据 : str 请求数据
文件名称 : str 此处添加测试框架中 test_data 目录下的 文件全名,若是批量文件上传接口,则可以录入多个文件全名以英文"逗号"隔开
返回结果 : str 用例执行后的返回
检查点 : str 根据 检查表达式 自动匹配 返回结果中的数据,并把检查结果自动写入 执行结果中
执行结果 : str 检查点匹配后的结果信息,包括每个检查点是否通过 和 若用例中的任何报错信息也会 自动录入
开始时间 : str 用例执行开始时间
结束时间 : str 用例执行结束时间
消耗时间 : str 本条用例执行总共花费时间
执行人 : 用例编写人,这个值可在 setting 文件中配置
封装关于 python 对excel 的基本操作,包括 返回指定行/每行打印/每列打印/读指定位置/写指定位置/按列读/按列写/按行读/按行写等等,下面放了一些实现操作的类方法
# 替换指定位置的值 def replace_data(self, row, cell, data): if self.mode == 1: # print(row,cell,data) self.handle_sheet.write(int(row), int(cell), data) self.handle.save(self.excel_filename) return "修改行 %s 列 %s ,修改数据为 %s" % (str(row), str(cell), str(data)) else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘ # 替换一行 def replace_nrows(self, data, nrows_number): if self.mode == 1: for i, item in enumerate(data): self.handle_sheet.write(nrows_number - 1, i, item) self.handle.save(self.excel_filename) return nrows_number, letter(i + 1) else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘ # 替换一列 def replace_ncols(self, data, ncols_number): if self.mode == 1: for i, item in enumerate(data): self.handle_sheet.write(i, ncols_number - 1, item) self.handle.save(self.excel_filename) return i + 1, letter(ncols_number) else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘
# 删除全部 def del_alldata(self): if self.mode == 1: replace_number = 0 for i in range(self.sheet.ncols): for n in range(self.sheet.nrows): self.handle_sheet.write(n, i, ‘‘) replace_number += 1 self.handle.save(self.excel_filename) return replace_number else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘ # 删除行 def del_nrows(self, nrows_number): if self.mode == 1: replace_number = 0 for i in range(self.sheet.ncols): self.handle_sheet.write(nrows_number - 1, i, ‘‘) replace_number += 1 self.handle.save(self.excel_filename) return replace_number else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘ # 删除列 def del_ncols(self, ncols_number): if self.mode == 1: replace_number = 0 for n in range(self.sheet.nrows): self.handle_sheet.write(n, ncols_number - 1, ‘‘) replace_number += 1 self.handle.save(self.excel_filename) return replace_number else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘ # 删除某个位置 def del_data(self, nrows_number, ncols_number): if self.mode == 1: self.handle_sheet.write(nrows_number + 1, ncols_number + 1, ‘‘) self.handle.save(self.excel_filename) return self.sheet.cell(ncols_number + 1, nrows_number + 1).value else: print(self.excel_filename + u" 不存在,无法进行操作!!!") return ‘error: not file.‘ # 删除指定数据 def del_value(self, data): if self.mode == 1: replace_number = 0 for i in range(self.sheet.ncols): for n in range(self.sheet.nrows): if data == self.sheet.cell(n, i).value: self.handle_sheet.write(n, i, ‘‘