JMeter多重断言之 BeanShell断言

JMeter BeanShell断言

Bean Shell常用内置变量

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!);

ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。

vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:

    a) vars.get(String key):从jmeter中获得变量值

    b) vars.put(String key,String value):数据存到jmeter变量中

    更多方法可参考:org.apache.jmeter.threads.JMeterVariables

props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

    a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义

    b) props.put("PROP1","1234");

prev - (SampleResult):获取前面的sample返回的信息,常用方法:

    a) getResponseDataAsString():获取响应信息

    b) getResponseCode() :获取响应code

    更多方法可参考:org.apache.jmeter.samplers.SampleResult

sampler - (Sampler):gives access to the current sampler

在这里插入图片描述


import org.json.JSONArray;  
import org.json.JSONException;  
import org.json.JSONObject;  

//获取上一个请求的返回
String jsonString = prev.getResponseDataAsString();
JSONObject responseJson = new JSONObject(jsonString);

String strcode = responseJson.getString("code");
log.info(strcode);
log.info(jsonString);

if (strcode.equals("50003")) {
                Failure = false;
                log.info("呼叫成功:"+jsonString);
}
else if (strcode.equals("50001")) {
                Failure = false;
                log.info("暂时无法接听:"+jsonString);
}
else {
	Failure =true;
    	log.info("失败:"+jsonString);
}
	
          

另外BeanShell PostProcessor 可打印请求日志
在这里插入图片描述

public void writeToLog(){
	String logInfo = "\n";
	//线程组名 + 采样器名称 "线程组名 / 采样器名称:"+
	logInfo = logInfo + prev.getThreadName() + " " +  prev.getSampleLabel() + "\n";
	//请求内容,如果仅需要url的话,可以使用prev.getUrlAsString()方法 "请求地址:"+
	logInfo = logInfo + prev.getSamplerData() + "\n";
	//响应状态码 "响应状态码:"+
	logInfo =logInfo + prev.getResponseCode() + "\n\n";
	//响应内容  "响应内容:"+
	logInfo = logInfo + prev.getResponseDataAsString() + "\n";
	//写入日志 "写入日志:"+
	log.info(logInfo);
	}
 
writeToLog();

版权声明:本文为qq_42846555原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。