JMeter----正则表达式&JSON Path Extractor
最近在用JMerter给公司一个项目做性能测试,期间遇到要提取上一个接口返回的数据作为下个接口的请求。这里做下记录

如图所示,需要将“扫描二维码”接口请求的返回值中的data部分,作为“处理提交码值”接口的参数传递给服务器。
首先我想到的是利用正则表达式,直接把整个data部分提取出来,
嗯,没错,是不是觉得一步就搞定了,还说个毛线。
但是.............
坑爹的是,服务端在接收data数据的时候,要对data数据做处理
首先,data以数组的形式传参(有可能一次提交多个码),
其次,data数组里边嵌套字典的形式,但是我传给服务端需要把""转义。。。(这里真的想吐血,请教下各位大佬,这种情况服务端不能做处理吗)
结果,要传递的值大概就是下面呈现的形式:(懵逼....)

所以,之前把整个data部分取出来的想法pass了。。。
好吧,我另辟蹊径,想着把每个参数单独取出来,下个接口在body里边先把"做成\",先转义,再把值引用进来(像是抠图一样的赶脚...)
说完就干,前面几个参数取值都OK,没什么难度,取boxList的时候有点犯难,这个参数前后一般都是","符号,没有明显的标志。
查了度娘,找了一种方法来取值:

把整个boxList全部取值(共6个),再用匹配数字去取第几个值。
这里有个小插曲,开始以为可以用【模板】里边的$1$这种去匹配表达式里边的6个取值,后面接口再用boxList_1、boxList_2........boxList_6来引用。后面发现不行...
【模板】$1$$2$代表的是,正则表达式中有多个提取式(多个括号里边的东东),第一个取值和第二个取值怎么组合形式
比如:正则表达式提取出来两个值,一个是lixiaoming,一个是24,如果【模板】写成$1$$2$,那么后面应用的时候,这个参数展现就是“lixiaoming24”(中间可以加其他连接符,有时候取多个值,再以某种形式组合成一个参数,这种可能会用到)
好,值取出来了。然后添加了6个正则提取器(请教大佬,这种后置处理器添加太多,对性能测试本身会有多大影响呢)
大致的形式就是这样的:(....我也很无奈...)

后面接口,用boxList1....boxList6引用,OK,没问题。
后面经理给我说有一个叫JSON Path Extractor的插件,用来提取服务器返回的json中的数据很好用。(what?!居然之前没有使用过这等插件)
马上相会度娘,找了几篇测友发的经验之谈,哇靠,果真简单粗暴....
马上招来玩玩,啊呸,马上学些学习~
下载了插件,然后学着写提取表达式

data里边的数据可以看做是字典里边嵌套数组的形式,操作字典引用key,数组的话用索引去取值
于是表达式为:$.data.boxList[0]
另外,网上也找了另一种,data是数组里边嵌套字典的,学习学习

提取id的表达式为:$.data[0].id
OK,新方法果然比正则表达式好用(自我觉得),而且也比较好理解
另外,在添加了正则表达式,JSON Path Extractor等提取器,想查看表达式写的是否正确,提取的内容是否正确。"查看结果树"可以做到

在结果树中选择“RegExp Tester”,输入你写的正则表达式,就能知道正则是否写正确了。

同理,JSON Path Extractor一样

OK,写完了。这次还是有不少收获,后面再对JMeter系统学习学习。
如果文中有些错误点,希望各位大佬及时指出,定虚心接受~
JMeter----正则表达式&JSON Path Extractor的更多相关文章
- Jmeter之Json Path Extractor 接受上一个请求的响应参数
最近在使用Jmeter进行接口测试,被一个问题困扰了很久,就是第二个请求如何接收上一个请求响应中的参数,刚开始尝试着用网上普遍说的正则表达式,长了了N多次之,都没有达到我想要的效果,被整的够惨,于是, ...
- Jmeter之JSON Path Extractor的使用(JSON-handle下载安装和使用)
jp@gc - JSON Path Extractor和“正则表达式提取器”使用效果一样. 他的作用单一,只提取json数据 jp@gc - JSON Path Extracto 变量名自己定义,js ...
- Jmeter 中JSON Path Extractor高级用法
好久没玩jemter了,由于项目原因又重新拾起.在使用JSON Path Extractor(jmeter 4.0已经默认支持了,4.0以下要自行安装插件)时,可以进行条件过滤,不用再自行写shell ...
- JMeter安装JSON Path Extractor插件
下载地址:https://jmeter-plugins.org/wiki/PluginsManager/ 先下载jmeter-plugins-manager-1.3.jar,点击下图中的JAR fil ...
- JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为 JSON 数据格式.JSON 简介,JSON 教程. JSON 已经成为数据交换格式 ...
- JMeter 插件 Json Path 解析HTTP响应JSON数据
一.基本简介 JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为JSON数据格式.JSON 简介,JSON 教程. JSON 已经成为数 ...
- JSON Extractor/jp@gc - JSON Path Extractor 举例2
测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 { "status_code":200, "message&qu ...
- JSON Extractor/jp@gc - JSON Path Extractor 举例
测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 {"status_code":200,"message" ...
- 通过JMETER后置处理器JSON Path Extractor插件来获取响应结果
学生金币充值接口:该接口有权限验证,需要admin用户才可以做操作,需要添加cookie.cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign. 通常做法是在HT ...
随机推荐
- db2创建数据库
1.在实例用户用户下执行 db2 create database <DBName> on /home/db2inst1/<DBName> using codeset UTF ...
- sqli-labs:24,二次注入
二次排序注入 二次排序注入也称为存储型注入,就是将可能导致 sql 注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发 sql 注入. 二次排序注入思路: 1. 黑客通过构造数据的 ...
- Python Tutor
Python Tutor Python Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程.通过这个工具, ...
- 2016-2017-2 20155312 实验二《Java面向对象程序设计》实验报告
知识总结 伪代码 产品代码 Java编程时,程序员对类实现的测试叫单元测试. 测试用例是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 先写 ...
- 如何使用GCC生成动态库和静态库
根据链接时期的不同,库又有静态库和动态库之分.静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行.而动态库是在程序执行的时候被链接的.程序执行完,库仍需 ...
- 2018.12.22 bzoj3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)
传送门 题意简述:给出一棵trietrietrie树,每个点表示一个字符,求树上所有路径组成的不同字串数.(叶子数≤20\le 20≤20) 由于有一个神奇的条件,考虑以每一个叶子为树根统计每个点到树 ...
- jQuery插件开发全解析[转]
jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...
- php 操作redis 以及几个常用命令
redis-cli -h host -p port -a password 首次进入redis 进行绑定ip和端口号 del key 删除指定key exists key 检查指定key是否存 ...
- CAS 界面根据不同的域名显示不同的界面
概要 在实际需求中,客户想通过不同的域名显示不同的登录界面,比如输入 manage.aps.cn 显示运维管理登录,business.aps.cn 显示业务管理登录. 实现方法 1.准备两套登录UI ...
- 实现数组(java)
一,数组 java中有对数组的数据结构:数组就是一个存放固定数据的结构. 数组的声明举例:int [] array=new int [3],与之相同的是private in [ ] array; a ...