python使用正则+jsonpath处理接口依赖
2024-10-19 10:23:50
1、接口2的入参值依赖接口1的响应结果,如接口2的入参ids需要拿到接口1响应结果的id字段值,测试用例写在excel中,参数:{"ids":"${$..id}$"}
2、工具类result_utils.py中实现如下:
1)正则表达式:p_data = '\${(.*?)}\$' ,采用的是非贪婪模式
2)查找要替换的字段方法,返回列表:
#正则匹配查找
def res_find(data,pattern_data=p_data):
pattern = re.compile(pattern_data)
re_res = pattern.findall(data)
return re_res
param = {"ids":"${$..id}$"}
print(res_find(param,p_data)
打印结果:['$..id']3)
3)使用jsonpath从响应结果提取对应字段的值
#找到值,返回列表;没找到,返回False,bool值
def save_response(self,result,params):
if result:
param = jsonpath.jsonpath(result,params)
# 提取结果为True
if (param==False):
raise Exception("提取结果为FALSE,请检查表达式是否正确")
pass
else:
return param
else:
raise Exception('响应结果为空,无法提取')
values = Response().save_response(result,'$..id')
value打印结果:单个值['111'],多个值['111','222']
4)拿到了要替换的字段、和替换的新值,就要开始替换了,写了一个替换的方法
#正则匹配提取后替换
def res_sub(data,replace,pattern_data=p_data):
pattern = re.compile(pattern_data)
re_res = pattern.findall(data)
if re_res:
#replace被替换串
return re.sub(pattern_data,replace,data)
return re_resdd
调用替换的方法进行参数替换:
params为接口2拿到的入参{"ids":"${$..id}$"},values为上面3)提取的值
value = values[0],values是列表,我是取值第一个
params = res_sub(params, value)
返回params,即参数替换结果
备注:第一次写博客,不好的地方多指教,本文为原创,如有引用,请注明出处,谢谢
最新文章
- ECMAScript Web APIs node.js
- Windows英文版GitHub客户端使用操作流程图文攻略教程现没中文版
- Python之MySQL
- 原生js实现addClass,removeClass,hasClass方法
- Microsoft.Practices.EnterpriseLibrary企业库问题
- Tuning “enq:TX – row lock contention” events
- 利用青瓷布局自定义加载的场景,而不是自己改写qici-loading
- mysql数据库还原出错ERROR:Unknown command ‘\\’解决手记
- java泛型编程
- nginx的请求接收流程(二)
- myeclipse连接hadoop集群编程及问题解决
- svn branch 的使用
- 海康相机SDK二次开发只有视频无声音问题
- 001_Go hello world
- python_flask 基础巩固(自定义URL转换器)
- Electron入门笔记(一)-自己快速搭建一个app demo
- TensorFlow实战Google深度学习框架10-12章学习笔记
- 简易selenium自动化测试框架(Python)
- Go 结构体(Struct)
- vue.js环境配置步骤及npm run dev报错解决方案