最近在用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的更多相关文章

  1. Jmeter之Json Path Extractor 接受上一个请求的响应参数

    最近在使用Jmeter进行接口测试,被一个问题困扰了很久,就是第二个请求如何接收上一个请求响应中的参数,刚开始尝试着用网上普遍说的正则表达式,长了了N多次之,都没有达到我想要的效果,被整的够惨,于是, ...

  2. Jmeter之JSON Path Extractor的使用(JSON-handle下载安装和使用)

    jp@gc - JSON Path Extractor和“正则表达式提取器”使用效果一样. 他的作用单一,只提取json数据 jp@gc - JSON Path Extracto 变量名自己定义,js ...

  3. Jmeter 中JSON Path Extractor高级用法

    好久没玩jemter了,由于项目原因又重新拾起.在使用JSON Path Extractor(jmeter 4.0已经默认支持了,4.0以下要自行安装插件)时,可以进行条件过滤,不用再自行写shell ...

  4. JMeter安装JSON Path Extractor插件

    下载地址:https://jmeter-plugins.org/wiki/PluginsManager/ 先下载jmeter-plugins-manager-1.3.jar,点击下图中的JAR fil ...

  5. JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)

    JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为 JSON 数据格式.JSON 简介,JSON 教程. JSON 已经成为数据交换格式 ...

  6. JMeter 插件 Json Path 解析HTTP响应JSON数据

    一.基本简介 JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为JSON数据格式.JSON 简介,JSON 教程. JSON 已经成为数 ...

  7. JSON Extractor/jp@gc - JSON Path Extractor 举例2

    测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 { "status_code":200, "message&qu ...

  8. JSON Extractor/jp@gc - JSON Path Extractor 举例

    测试描述 使用json返回结果做校验 测试步骤 1.配置http请求 2.根据结果树返回的json,取值 {"status_code":200,"message" ...

  9. 通过JMETER后置处理器JSON Path Extractor插件来获取响应结果

    学生金币充值接口:该接口有权限验证,需要admin用户才可以做操作,需要添加cookie.cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign. 通常做法是在HT ...

随机推荐

  1. db2创建数据库

    1.在实例用户用户下执行 db2 create database <DBName>  on /home/db2inst1/<DBName>  using codeset UTF ...

  2. sqli-labs:24,二次注入

    二次排序注入 二次排序注入也称为存储型注入,就是将可能导致 sql 注入的字符先存入到数据库中,当再次调用这个恶意构造的字符时,就可以出发 sql 注入. 二次排序注入思路: 1. 黑客通过构造数据的 ...

  3. Python Tutor

    Python Tutor Python Tutor 是由 Philip Guo 开发的一个免费教育工具,可帮助学生攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程.通过这个工具, ...

  4. 2016-2017-2 20155312 实验二《Java面向对象程序设计》实验报告

    知识总结 伪代码 产品代码 Java编程时,程序员对类实现的测试叫单元测试. 测试用例是为某个特殊目标而编制的一组测试输入.执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求. 先写 ...

  5. 如何使用GCC生成动态库和静态库

    根据链接时期的不同,库又有静态库和动态库之分.静态库是在链接阶段被链接的,所以生成的可执行文件就不受库的影响,即使库被删除,程序依然可以成功运行.而动态库是在程序执行的时候被链接的.程序执行完,库仍需 ...

  6. 2018.12.22 bzoj3926: [Zjoi2015]诸神眷顾的幻想乡(广义后缀自动机)

    传送门 题意简述:给出一棵trietrietrie树,每个点表示一个字符,求树上所有路径组成的不同字串数.(叶子数≤20\le 20≤20) 由于有一个神奇的条件,考虑以每一个叶子为树根统计每个点到树 ...

  7. jQuery插件开发全解析[转]

    jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法.jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级 ...

  8. php 操作redis 以及几个常用命令

    redis-cli -h host -p port -a password 首次进入redis 进行绑定ip和端口号   del key 删除指定key   exists key 检查指定key是否存 ...

  9. CAS 界面根据不同的域名显示不同的界面

    概要 在实际需求中,客户想通过不同的域名显示不同的登录界面,比如输入 manage.aps.cn 显示运维管理登录,business.aps.cn 显示业务管理登录. 实现方法 1.准备两套登录UI ...

  10. 实现数组(java)

    一,数组 java中有对数组的数据结构:数组就是一个存放固定数据的结构. 数组的声明举例:int [] array=new int [3],与之相同的是private  in [ ] array; a ...