很多测试小伙伴在使用 jmeter 进行性能测试过程中,经常会遇到一个令人头疼的问题:压测返回报文与断言不匹配时,如何将返回的原始报文保存到日志中,方便后续定位问题。此时传统的响应断言 (Response Assertion)方式就不满足需求了,需要自己通过写BeanShell Assertion的方式来实现。下面就来演示具体的步骤 (不啰嗦,直接切入主题 )。
//需要将org.json.jar包放置到jmeter安装目录的lib文件夹下,然后引入jar包
//jar包下载位置:https://mvnrepository.com/artifact/org.json/json/20190722
import org.json.*;
//获取返回的报文
String response = prev.getResponseDataAsString();
//将返回报文转换为json对象,判断其中的code,如果code为非20000,则将结果输出到log文件中
JSONObject jsonObject2 = new JSONObject(response);
if(jsonObject2.get("code").toString() != "20000"){
//如果返回的报文中状态码不是20000,则将此用例的状态设置为失败并且将返回报文写到jmeter的log文件中
Failure=true ;
log.info("*****************");
//将日志级别修改为error,方便定位查找
log.error("返回报文异常:"+response);
}