RequestsUtil写入接口关联值
1、流程
1、编写yaml测试数据,使用extract关键字表示该用例需要将响应接口的某字段提取出来,写入到extract.yaml文件中。如下
extract:
cover_url: $.data # jsonpath方式从响应结果中提取数据
message: "message":"(.*?)" # 正则表达式
2、yaml测试数据例子
extract:
cover_url: $.data
-
feature: 相册管理
story: 上传接口
title: 上传图片
request:
method: post
url: /api/admin/photos/albums/cover
files: 'C:\\Users\\mingyuewu\\Pictures\\130.jpg'
headers:
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36
extract:
cover_url: $.data
validate: success
3、编写方法处理测试数据中extract关联值
def write_extract(self,casedata,response):
'''
:param casedata:pytest.mark.parametrize()读取到的测试数据
作用: 如果测试数据yaml文件中有extract关键字,则从response中提取关联值,写入extract文件
:return 无返回值
'''
casedata = dict(casedata)
if "extract" in casedata.keys():
#print(casedata["extract"])
print('-----------------#####写入关联值####-----------------')
for key,value in casedata["extract"].items():
extract={}
#正则表达式提取
if '(.+?)' in value or '(.*?)' in value:
extract[key] = re.search(value,response.text)
ConfigYamlUtil.write_extract_yaml(extract)
print(extract)
# json提取
else:
extract[key] = jsonpath.jsonpath(response.json(),value)[0]
ConfigYamlUtil().write_extract_yaml(extract)
print(extract)
else:
pass