python使用正则+jsonpath处理接口依赖
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处理接口依赖的更多相关文章
- python接口测试中常见的两种接口依赖处理方式
一.请求体的字段依赖 这种情况多数是在当前测试的接口,它的前置接口的请求体中的字段要拿来在当前的接口请求体中继续使用,比如修改用户信息的接口,该接口会使用到用户名的字段,该字段是由创建用户时的请求体中 ...
- Jmeter之接口依赖
一.应用场景 1.现在有两个接口,一个是登录,一个查询,但查询接口必须要依赖登录接口的token,那么通过正则表达式提取器提取登录接口的响应结果 2.现在有两个接口,A接口返回列表数据,另一个查询接口 ...
- 基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0
基于python+Testlink+Jenkins实现的接口自动化测试框架V3.0 目录 1. 开发环境2. 主要功能逻辑介绍3. 框架功能简介 4. 数据库的创建 5. 框架模块详细介绍6. Tes ...
- python开发面向对象基础:接口类&抽象类&多态&钻石继承
一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实 ...
- 用Python调用华为云API接口发短信
[摘要] 用Python调用华为云API接口实现发短信,当然能给调用发短信接口前提条件是通过企业实名认证,而且有一个通过审核的短信签名,话不多说,showcode #!/usr/bin/python3 ...
- Python+Pytest+Allure+Git+Jenkins接口自动化框架
Python+Pytest+Allure+Git+Jenkins接口自动化框架 一.接口基础 接口测试是对系统和组件之间的接口进行测试,主要是效验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系. ...
- python re 正则
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 一个可扩展的深度学习框架的Python实现(仿keras接口)
一个可扩展的深度学习框架的Python实现(仿keras接口) 动机 keras是一种非常优秀的深度学习框架,其具有较好的易用性,可扩展性.keras的接口设计非常优雅,使用起来非常方便.在这里,我将 ...
- python 速记正则使用(转)
目录 python 速记正则使用(转) 正则表达式语法 字符与字符类 量词 组与捕获 断言与标记 条件匹配 正则表达式的标志 Python正则表达式模块 四大功能 两种方法 常用方法 匹配对象的属性与 ...
随机推荐
- 【MySQL】常用的命令
连接数据库 mysql -u root -pmysql -u root -h 192.168.16.140 -p 创建数据库 create database dbstudents; 查看所有数据库 s ...
- 无规矩不成方圆,聊一聊 Spring Boot 中 RESTful 接口设计规范
在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则.接口单一原则.接口过滤和接口组合等诸多因素,本篇文章将简要分 ...
- Linux命令大全之关机重启命令
1.shutdown [选项] 时间 -r(reboot)重启 -h(halt)关闭 -c(cancel)取消 注:shutdown -h 时间 &(加个&符号再按回车不影响其它操 ...
- Mysql优化(出自官方文档) - 第七篇
Mysql优化(出自官方文档) - 第七篇 目录 Mysql优化(出自官方文档) - 第七篇 Optimizing Data Change Statements 1 Optimizing INSERT ...
- c#创建windows服务(创建,安装,删除)
一.在vs中创建一个window服务 二.进入Service1.cs页面后 右击----创建安装程序,安装程序创建成功后---会出现ProjectInstaller.cs文件 三.进入ProjectI ...
- Linux 从头学 01:CPU 是如何执行一条指令的?
作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...
- Redis之Sentinel
Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多应用场景这种故障处理的方式是无法接受的.可喜的是Redis从 2.8 ...
- 选择适合小企业的CRM软件
随着信息时代的到来和客户掌握的信息变多,大多数企业开始从"以产品为中心"转变为"以客户为中心".为了适应市场的变化,许多企业开始使用客户关系管理软件来提高工作效 ...
- 前端笔记:Html页面常用元素
Html页面由基本几个元素(标签)组成 html.head.body.foot(很少使用). html是整个页面的父级元素,内部包括head.body.foot子类标签. head是页头,及页面的头部 ...
- Https:SSL双向认证机制(理论知识)
1.基础知识 这部分内容主要解释一些概念和术语,最好是先理解这部分内容. 1.1.公钥密码体制(public-key cryptography) 公钥密码体制分为三个部分,公钥.私钥.加密解密算法,它 ...