零基础小白 接口自动化测试集锦: https://www.jianshu.com/nb/49125734
引言
接口自动化测试过程中很多接口的前置条件是先登录获取到有效的token后返回给后面的接口作为参数调用。Excel维护接口测试用例,专门使用一列命名为“前置条件” 例如查看玩家信息接口,前置条件--登录
代码设计--由简入繁
关联token直接维护到Excel中
requestToken直接维护到Excel中.jpg运行结果
成功获得accessToken.jpg如何获取前置条件Case用例
思路分析
- 1、验证前置条件;
##1.验证前置条件
if pre_exec:
pass
- 2、找到执行用例;
- 3、发送请求、获取前置测试用例返回结果;
- 4、替换现有传参变量;
步骤1 维护ExcelData.py脚本
- 新增 获取全部测试用例类
# 获取全部测试用例
def get_case_list(self):
"""
获取全部测试用例
:return:
"""
# 方法1: 常用代码写法
run_list = list()
for line in self.reader.data():
run_list.append(line)
return run_list
# 列表推导
run_list = [line for line in self.reader.data()]
return run_list
- 新增 获取前置条件测试用例
def get_case_pre(self,pre):
"""
首先从全部测试用例中,获取前置条件的测试用例
:param pre:
:return:
"""
# 首先获取全部测试用例
run_list = self.get_case_list()
for line in run_list:
if pre in dict(line).values():
return pre
return None
步骤2 新增test_excel_case.py脚本
if pre_exec:
pass
# 找到前置条件用例
pre_case = data_init.get_case_pre(pre_exec)
print("前置用例执行: %s" % pre_case)
Excel维护前置条件数据.jpg
成功获得accessToken.jpg
步骤3 优化test_excel_case.py脚本
思路:发送请求获取前置测试用例、用例结果、数据初始化,get/post,重构代码
- 第1步:初始化Excel-DataConfig配置项
# 前置条件运行
def run_prc(self,pre_case):
"""
前置条件运行
:param pre_case:
:return:
"""
pass
# 初始化数据
url = ConfigYaml().get_conf_url() + pre_case[data_key.url]
method = pre_case[data_key.method]
params = pre_case[data_key.params]
headers = pre_case[data_key.headers]
cookies = pre_case[data_key.cookies]
- 第2步:判断headers、cookies是否存在,存在json转义,不存在无需转义
- 第3步:Base.py新增方法--判断headers、cookies是否存在
def json_parse(data):
"""
格式化字符,转换json
:param data:
:return:
"""
# 方法1:
# # 判断headers是否存在,json转义,无需
# if headers:
# header = json.loads(headers)
# else:
# header = headers
# 方法2: 列表推导
return json.loads(data) if data else data
- 第4步:调用Base.py中json_parse方法
# 前置条件运行
def run_prc(self,pre_case):
"""
前置条件运行
:param pre_case:
:return:
"""
pass
# 初始化数据
url = ConfigYaml().get_conf_url() + pre_case[data_key.url]
method = pre_case[data_key.method]
params = pre_case[data_key.params]
headers = pre_case[data_key.headers]
cookies = pre_case[data_key.cookies]
# 判断headers、cookies是否存在,存在json转义,不存在无需转义
# 调用Base.py中json_parse方法
header = Base.json_parse(headers)
cookie = Base.json_parse(cookies)
# 发送请求
调用Base.py中json_parse方法.jpg
- 第5步:test_excel_case.py脚本新增 run_api请求方法
def run_api(self,url,method,params=None,header=None,cookie=None,):
"""
发送请求api
:return:
"""
# 接口请求
request = Request()
# params 转义json
#验证params 有没有内容
if len(str(params).strip()) != 0:
params = json.loads(params)
#method post/get
if str(method).lower()=="get":
#增加headers,cookies
res = request.get(url,json = params,headers = header,cookies = cookie)
elif str(method).lower()=="post":
res = request.post(url, json=params,headers = header,cookies = cookie)
else:
log.error("错误请求method: %S"%method)
# print(res)
return res
- 第6步:test_excel_case.py脚本中test_run方法 调用执行前置测试用例
##1.验证前置条件
if pre_exec:
pass
# 找到前置条件用例
pre_case = data_init.get_case_pre(pre_exec)
print("前置用例执行: %s" % pre_case)
# 调用run_pre运行方法
self.run_prc(pre_case)
前置Case运行结果.jpg
网友评论