如何忽略数据中的签名部分进行jsonpath断言

记录一下这个问题:

问题:上传的图片链接存在数据库里,请求接口返回的参数中也有这个图片链接,要断言返回参数的图片链接和数据库的是同一张图片

难点:但是都是加了签名的,直接进行对比,是通不过的

解决思路:后来想了一个办法,就是用数据库的自带函数SUBSTRING_INDEX(str,delim,count),截取签名前的字符串,和接口返回的参数进行对比(返回参数用jsonpath进行提取),用包含关系进行断言就可以了

函数解释:SUBSTRING_INDEX(str,delim,count),str就是需要截取的字符串,delim就是标志位,以什么作为截断的字符,count就是取截取后的字符串数组的第几位,下标是从1开始的,不是从0开始的,如果要取最后一位可以用-1

举例:

数据库里的图片链接:

https://s3.ap-southeast-1.amazonaws.com/iglooinsure.qa-fileapi/SompoUIC-2022-01-c9f203-222.jpeg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAU2NHV2XFADTKQNVK%2F20220114%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20220114T032625Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=059cd4891c6a42160a7e276a7aa457800b70a51020dd9d800b403ba57d520619​​​​​​​w


问号后面的字符串都是签名,每一次接口返回的都不一样,两者不能直接进行对比

  

用SUBSTRING_INDEX()提取问号前的字符串,取第一个数组:

select SUBSTRING_INDEX(json_unquote(json_extract(json_extract(claim_form,'$.claim_docs'),'$.hospital_discharge[0]')),'?',1)  as hospital_discharge
from claim where  display_id='HAS62140122-B-00007MA.CL00000012'

然后在断言的时候用包含关系:

 tips:这个接口测试工具用的meter sphere,是继承jmeter

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值