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);

如图:

 

 

 

查看请求:

 

 

posted @ 2022-01-01 16:32  keena_jiao  阅读(463)  评论(0编辑  收藏  举报