首页 > 编程语言 > 详细

python使用正则+jsonpath处理接口依赖

时间:2021-07-30 15:58:26      阅读:24      评论:0      收藏:0      [点我收藏+]

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,即参数替换结果

 

备注:第一次写博客,不好的地方多指教,本文为原创,如有引用,请注明出处,谢谢

 

python使用正则+jsonpath处理接口依赖

原文:https://www.cnblogs.com/aprlmingmei/p/15078300.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!