JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
来源:互联网 发布:淘宝上万宝贝怎么上传 编辑:程序博客网 时间:2024/05/17 01:23
JMeter把上一个请求的结果作为下一个请求的参数,我使用百度的方法,因为没有理解到提取数据的含义,导致没有获取正确,主要的原因是我要获取参数的格式为:{"code":"100","data":"cableS":"0","chargeS":"","chargeSs":"1","chargerKwh":"0","onlineStatus":"1","portNo":"1","reservationSn":"000030000000010204201991250915220002","usCard":"08000010000000146"},"msg":"..."}
我需要获取reservationSn,我之前一直以为从data获取,使用"data":"(.+?)",一直提示错误,后来修改成"reservationSn":"(.+?)",就正确了。
把百度的方法贴在里面,也把调试的方法记录下来,方便以后查看。
比如上传采样器是 /upload/batchImport/merAdd/20141124/1(因为我们需要从其返回数据中提取我们需要的参数,本文我们称之为"提参采样器"),文件修改请求采样器是 /merServPlat/merInfo/import/add.json(因为它将要使用我们提取的参数,即参数化,本文我们称之为"用参采样器")。
/upload/batchImport/merAdd/20141124/1 上传文件成功之后,服务器会返回 /batchImport/merAdd/20141124/1/201411201455.xls:
JMeter GUI 视图中右击该采样器打开右键菜单 -> 添加 -> 后置处理器 -> 正则表达式提取器,打开"正则表达式提取器"会话页面并编辑其内容如下:
- 引用名称是 /merServPlat/merInfo/import/add.json 请求将要引用到的变量名;
- 正则表达式是提取你想要内容的正则表达式,小括号()表示提取,也就是说对于你想要提取的内容需要用它括起来;
- 模板是使用提取到的第几个值。因为可能有多个值匹配,所以要使用模板。从 1 开始匹配,依次类推。这里只有一个,所以填写 $1$ 即可;
- 匹配数字表示如何取值。0 代表随机取值,1 代表全部取值。这里只有一个,填 1 即可;
- 缺省值表示参数没有取到值的话,默认给它的值。一般不填。
比如文件修改请求采样器 /merServPlat/merInfo/import/add.json 的请求是 /merServPlat/merInfo/import/add.json?file=%2FbatchImport%2FmerAdd%2F20141124%2F1%2F0000000.xls。
中间带有的 %2F 是将 / 转义处理。我们只需要把第一步提取到的参数放进去即可:/merServPlat/merInfo/import/add.json?file=%2FbatchImport%2FmerAdd%2F20141124%2F1%2F${anycall}.xls
3. 添加 Debug Sampler 以对正则提取器进行调试
JMeter GUI 视图中右击 Thread Group 打开其右键菜单 -> 添加 -> Sampler -> Debug Sampler。
使用Jmeter开发脚本时,难免需要调试,这时可以使用Jmeter的Debug Sampler,它有三个选项:JMeter properties,JMeter variables,System properties:
1)JMeter properties和System properties:通常都选false,这两个就是JMeter和系统的属性,在Jmeter的bin的jmeter.properties中定义,一般都不会变。
2)JMeter variables:这个是我们自已定义的变量,定义的方式有如下这些:
a) 选中测试计划(Test plan),在右边的面板上添加User Defined Variables
b) 选中线程组,右键选择 配置元件( config element)-->User Defined Variables
c) 通过后置处理器生成的变量。
d)使用csv参数化的变量。
JMeter GUI 视图中右击 Thread Group 打开其右键菜单 -> 添加 -> 监听器 -> 察看结果树
5. 执行线程组以调试验证正则提取器
CTRL + R 执行线程组,察看结果树的相关报告如下。
提参采样器 /upload/batchImport/merAdd/20141124/1 响应数据:
用参采样器 /merServPlat/merInfo/import/add.json 的请求:
Debug Sampler 的跟踪情况:
证明我们的正则表达式提取参数成功。
后记
除了正则提取器,对于返回结果为 xml 或者 json 内容的请求,JMeter 分别有 XPath Extractor、JSON Path Extractor 等提取器进行提取。
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
- jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
- jmeter 如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
- jmeter如何将上一个请求的结果作为下一个请求的参数——使用正则提取器
- Jmeter:正则表达式提取器上一个http请求报文内容作为下一个请求的参数
- jmeter学习笔记(2)——上一个请求的结果传递给下一个请求使用
- jmeter -正则表达式来提取请求响应结果
- Jmeter关联--如何将页面上次的返回值作为下次请求的参数
- Jmeter之Json Path Extractor 接受上一个请求的响应参数
- Jmeter正则表达式提取器的使用
- jmeter获取mysql数据并作为请求参数使用
- jmeter 使用BeanShell编写java代码提取请求参数
- Jmeter分析请求的响应结果
- jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件
- 如何将Linux命令的结果作为下一个命令的参数
- 如何将Linux命令的结果作为下一个命令的参数
- 将Linux命令的结果作为下一个命令的参数
- rails --查询数据表
- js 上下文字滚动效果
- EOJ1811 根据层号表示建树并后序遍历
- 上周随笔
- Oracle安装错误ora-00922(缺少或无效选项)
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
- JDK、J2EE、J2SE、J2ME的区别
- 内存管理问题-NSUserDefaults
- CUDA优化之Unrolling Loop/ 并行粒度
- logistic-regression
- 11. Container With Most Water
- “九头虫”病毒技术分析报告
- uboot 2016.05编译uboot.bin和spl
- 5.nginx源码分析之数据结构:ngx_string