Jmeter断言失败提取request body中的参数

一个曾经困扰了很久的问题,翻遍全网没有找到相关的答案,分享一下。

比如一个这样的场景:

post请求,使用csv参数化导入data,当响应断言错误的时候,输出并保存该请求传入的参数值(Request Body中的POST data)。
在这里插入图片描述
在这里插入图片描述
有人看到这会说了:你这不多此一举吗,把东西吃下去然后又吐出来。

没错,就好比我要吃一颗枣。把它放到嘴里,嚼了嚼,发现它坏了,吐出来,我要看看它是哪颗。

所以,并不是多此一举,因为这就是需求,需求即合理:-)

在Jmeter中,是没有类似正则提取器等处理器直接提取post data的方法的。

因此,只能添加一个BeanShell断言,自己写提取和处理方法。
在这里插入图片描述
取到post data的数据有两种方法:

1.prev.getSamplerData() //获取所有request body数据
2.prev.queryString //仅获取post data
在这里插入图片描述
这里的data已经被url编码了(当参数是中文时会被编码),因此将获取到的post data截取之后,使用URLDecoder解码。

方法:URLDecoder.decode()

如果入参是中文记得指定格式“UTF-8”,否则解码后会乱码。

这里有一点需要注意的是:

函数助手中的${__urldecode()}在Beanshell中是无效的,因为它只对常量有效,对变量无效。

例如:
data是变量,${__urldecode(data)}解码无效;
${__urldecode(“data”)}则会直接输出字符串data;
而输入常量,则有效:${__urldecode("%IT%E6%96%87%E8%89%BA%E9%9D%92%E5%B9%B4")}会正确解码输出;

最后将提取的错误入参保存到指定位置文件即可:
在这里插入图片描述
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值