JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)
JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试。我们的 API 返回结果为 JSON 数据格式。JSON 简介,JSON 教程。
JSON 已经成为数据交换格式的事实标准:
1. Ajax 调用时的返回数据;
2. 在移动应用中,HTTP 调用时的返回数据;
3. REST webservice 交换格式;
4. MongoDB 等 NO-SQL 数据库的数据存储格式;
5. ...
一定要安装 Json Path 插件?
- JSON 数据结构简单的情况
在JSON 数据结构简单的情况下,使用原生内置的 Regular Expression Extractor 后置处理器来提取数据是可以自如应对的,不一定非要安装 Json Path 相关插件; - 使用正则表达式的一个优势在于 JMeter 安装时就内置了,不用额外安装;
- 创建和阅读正则表达式并不容易,随着 JSON 数据结构复杂度上升,正则表达式是难以理解的,其可维护性自然大打折扣;
安装 Json Path 相关的插件就是一个较好的解决 JSON 数据结构复杂度的方法。
了解 Json Path 语法
对于熟悉 XPath 语法的人来说(XML 数值提取语法),使用 Json Path 解析 JSON 格式的响应数据比较方便;不过,即使你不熟悉 XPath 也没关系,来,马上了解 Json Path 语法就可以了。
了解 jmeter-plugins.org
This project is an independent set of plugins for Apache JMeter, the popular Open-Source load and performance testing tool.
为 JMeter 定制插件,提供独立的插件集。完整的插件集列表 有六大类:
- Standard Set
- Extras Set
- Extras with Libs Set
- WebDriver Set
- XMPP Set
- Hadoop Set
本次我们要安装的 Json Path 就包含在 Extras with Libs Set 里面。
安装 Extras With Libs Set
Installation and Usage
Just copy the JAR file into JMeter's lib/ext directory.
Then you can start JMeter and add additional items to your Test Plan.
Java version 1.6 and JMeter 2.4 are required.
Extras With Libs Set 这个插件集,目前最新 JMeterPlugins-ExtrasLibs-1.4.0.zip。
- JMeterPlugins-ExtrasLibs-1.4.0.zip 包
│ LICENSE
│ README
│
└─lib
│ asm-5.0.3.jar
│ commons-beanutils-1.8.3.jar
│ commons-lang-2.6.jar
│ commons-pool-1.6.jar
│ ezmorph-1.0.6.jar
│ jedis-2.2.1.jar
│ json-lib-2.4-jdk15.jar
│ json-path-2.1.0.jar
│ json-smart-2.2.jar
│ qpid-client-0.20.jar
│ qpid-common-0.20.jar
│ spring-core-2.5.6.jar
│ spring-jms-2.5.6.jar
│ xom-1.2.10.jar
│
└─ext
JMeterPlugins-ExtrasLibs.jar - JMeter 基本目录
├─bin
├─docs
├─extras
├─lib
│ ├─ext
│ └─junit
├─licenses
└─printable_docs - 将 Extras with Libs Set 解压到 JMeter 对应目录即可;
- 重启 JMeter;
目前在使用中还没发现什么问题。
使用 Json Path Assertion 检查返回值是否符合预期
使用 Post Processor:JSON Path Extractor 抽取变量值,供后续使用
- 从 JSON response 中提取数据(每个 Extractor 只能抽取一个变量);
- 存放到 passcode 变量中为后续使用;
- 如果没有找到,则变量 passcode 中会包含 “NO DEFAULT VALUE”(Default Value);
- 我们可以使用 ${passcode} 在后续元件中注入数据;
对照:使用 Regular Expression Extractor 一次提取多个数据
- 在一个请求下加一个 Regular Expression Extractor;
进行配置:
Reference Name: myVar
Regular Expression: {"succ":"(.+?)","passcode":"(.+?)"}
Template: $1$$2$
1)提取两个变量,使用 ${myVar_g1} 和 ${myVar_g2} 访问,加个 Debug Sampler 可以在 View Results Tree 查看;
2)即使使用 Regular Expression Extractor,也建议每个 Extractor 只提取一个变量值,直观有语义;
Regular Expression Extractor 的配置通过 View Results Tree 查看 Debug Sampler 的结果
通过 View Results Tree 查看 Debug Sampler 的结果通过 View Results Tree listener 内置的 Regex Tester 对正则表达式进行即时测试
通过 View Results Tree listener 内置的 Regex Tester 对正则表达式进行即时测试
使用 Listener:Assertion Results 以观察 Assertion 结果

JMeter 插件 Json Path 解析 HTTP 响应 JSON 数据(转)的更多相关文章
- JMeter 插件 Json Path 解析HTTP响应JSON数据
一.基本简介 JMeter 是一个不错的负载和性能测试工具,我们也用来做 HTTP API 接口测试.我们的 API 返回结果为JSON数据格式.JSON 简介,JSON 教程. JSON 已经成为数 ...
- JSON在线解析,新版本JSON在线解析
SOJSON,出了新版本的JSON在线解析,真的很好用,可以上下版本.左右版本.效果图如下.它的网址是:http://www.sojson.com/simple_json.html SOJSON集成了 ...
- js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)
js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...
- php 解析json失败,解析为空,json在线解析器可以解析,但是json_decode()解析失败(原)
$str2='{"code":200,"datas":{"id":1,"coupon_id":"123&quo ...
- Jmeter通过正则表达式提取器提取响应结果数据
Jmeter进行接口测试常常会运到一个问题:就是第二个请求如何接收上一个请求响应中的参数.比如,现在个学生金币充值的接口,得先调用登录接口然后从返回里面复制一下sign的值,放到cookie里这样才能 ...
- 【Golang 接口自动化04】 解析接口返回JSON串
前言 上一次我们一起学习了如何解析接口返回的XML数据,这一次我们一起来学习JSON的解析方法. JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基 ...
- Qt平台下使用QJson解析和构建JSON字符串
前言 上一篇介绍了C语言写的JSON解析库cJSON的使用:使用cJSON库解析和构建JSON字符串 本篇文章介绍,Qt开发环境下QJson库的使用示例,JSON解析配合API接口,就可以实现一些有趣 ...
- Json C#解析
介绍 项目中数据格式如果是是Json格式,推荐大家使用LitJson和Newtonsoft.json进行解析 库的详细介绍和下载地址 推荐使用VS自带的Nuget来使用 Newtonsoft.Json ...
- 通过JMETER后置处理器JSON Path Extractor插件来获取响应结果
学生金币充值接口:该接口有权限验证,需要admin用户才可以做操作,需要添加cookie.cookie中key为登录的用户名,value从登录接口中获取,登陆成功之后会返回sign. 通常做法是在HT ...
随机推荐
- day 关于生成器的函数
def average(): count=0 toatal=0 average=0 while True: value=yield average toatal+=value count+=1 ave ...
- 中文字符utf-8编码原则
UTF-8是一种变长字节编码方式.对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0:如果是 多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字 ...
- select标签的相关操作,选中,获取option的值,二级联动
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- socket长连接理解
在一个tcp连接上可以连续发送多个数据包,在tcp连接保持期间,如果没有数据包发送,需要双方发检测包以维持此连接,一般需要自己做在线维持. 长连接指建立socket连接后不管是否使用都保持连接,但安全 ...
- python josn转换方法-字典
python_json常用的方法 1. 什么是JSON? JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符 ...
- HDU 6038 17多校1 Function(找循环节/环)
Problem Description You are given a permutation a from 0 to n−1 and a permutation b from 0 to m−1. D ...
- G++ C++之区别
1.遇到精度用C++ 2.G++内存超限,C++过了 其他都用G++
- 神州数码RIP协议认证
实验要求:掌握RIP协议的简单认证及MD5认证 拓扑如下 简单认证 R1 enable 进入特权模式 config 进入全局模式 hostname R1 修改名称 interface s0/1 进入 ...
- React Native Headless JS(后台任务)(转载)
React Native Headless JS(后台任务) Headless JS是一种使用js在后台执行任务的方法.它可以用来在后台同步数据.处理推送通知或是播放音乐等等. JS端的API 首先我 ...
- Android ADT 工具下载地址
/********************************************************************************* * Android ADT 工具下 ...