Jmeter 中Bean Shell 使用(二)
一、使用BeanShell 断言
当我们在做测试时候,经常需要根据响应的结果,断言结果是否正确返回,除了使用响应断言外,也可以使用BeanShell 断言 准确的判断响应中的值是否与预期相等。
1、在http请求-->添加-->断言-->bean shell 断言
引入jar包
2、获取上一个请求的响应数据,对响应数据做判断
二、使用BeanShell 前置处理器
当我们在做测试时候,经常需要在请求前对参数进行预处理操作,比如我们的登录密码可能是需要进行加密操作的,那我们应该怎么做呢?
接下来再讲另外一种实现方式,在BeanShell 预处理程序先获取请求的body,签名后给sign参数重新赋值,然后发送新的请求body,整体实现思路如下
1.先获取请求body值
2.body转JSONObject对象
3.给jsonObject对象添加属性
4.JSONObject 转json字符串
5.给请求的body重新赋值
在发送请求之前添加上面功能的预处理,就可以实现body参数
代码实现如下:
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.config.Argument;
import org.json.JSONObject;
import org.json.JSONArray;
Arguments arguments = sampler.getArguments();
Argument arg = arguments.getArgument(0);
// 获取请求body值
String body = arg.getValue();
log.info("获取body 数据"+body);
//// body转json对象
JSONObject jsonObject = new JSONObject(body);
// 重新设置
jsonObject.put("purchaserNameLike", "18682366111");
// JSONObject 转字符串
String postData = jsonObject.toString();
log.info(postData);
// 重新赋值请求的body参数
arg.setValue(postData);
// JSONObject 转字符串
String postData = jsonObject.toString();
log.info("修改后的请求body:"+postData);
// 重新赋值请求的body参数
arg.setValue(postData);
如图:
查看请求: