Jmeter中如何获取Post请求参数中某个键的值

一、问题原因:一般测试接口经常会遇到某个接口依赖于上一个接口的返回值,这种情况使用Json提取器或者使用正则表达式就可以了。但是我碰到了一个让我无语的情况,接口的请求参数依赖于上个接口请求参数中某个字段的值。于是便开始一遍遍的问度娘。然而皇天不负有心人终于在开发童靴的帮助下解决了。在此记录一下碰到的坑。
二、解决步骤
1、在Http Request上添加一个BeanShellPostProcessors
2、在BeanShellPostProcessors中编写脚本

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONPath;
// 获取接口中的请求参数
String request = ctx.getCurrentSampler().getArguments().getArgument(0).getValue();
// 将请求参数转为Json格式的数据
JSONObject data_obj= JSON.parseObject(request);
// 拿到请求参数中的mobile值
String mobile = data_obj.getString("mobile");
// 输出日志, 点jmeter右上角的感叹号查看
log.info("mobile={}",data_obj.getString("mobile"));
// 将mobile的数据设为jmeter中变量的值供其它地方使用
//vars.put("mobile", mobile)
// 设置为全局变量
//${__setProperty("phoneNumber", ${mobile},)}
// props可以跨线程组使用,但是vars不可以。
props.put("phoneNumber", mobile);

3、将fastjson-1.2.83.jar包放在jmeter的lib目录下,不然会因为缺少所依赖的包报错。
三、在需要满足需求的道路上一次次的踩坑。
1、本想着使用vars.put(“mobile”, mobile) 设置了变量,那么取出来就可以了,于是使用 m o b i l e 取值,但是每次取出来的值都是 1 。既然这样行不通,那么换一个思路,将 m o b i l e 设置为全局变量。于是使用 {mobile}取值,但是每次取出来的值都是1。既然这样行不通,那么换一个思路,将mobile设置为全局变量。于是使用 mobile取值,但是每次取出来的值都是1。既然这样行不通,那么换一个思路,将mobile设置为全局变量。于是使用{__setProperty(“phoneNumber”, KaTeX parse error: Expected 'EOF', got '}' at position 11: {mobile},)}̲将mobile设置为全局变量,…{__P(phoneNumber)}将全局变量取出。但是每次取出来的值还是1。最后使用props.put(“phoneNumber”, mobile),使用${__P(phoneNumber)}取值。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值