一、BeanShell断言
1.1 、用到了prev对象:
获取取样器的响应结果
代码如下:prev.getResponseDataAsString()
1.1.1、 prev 延伸
有时候需要在BeanShell PostProcessor中,对接口响应进行一下判断和处理,这时就用到了prev对象
官方文档:SampleResult (Apache JMeter dist API)
小菠萝测试笔记jmeter全集:https://www.cnblogs.com/poloyy/category/1746599.html
prev在jmeter中是一个对象,它代表了前一次采样结果的各种信息,可以通过它获取前一次采样结果的响应时间、响应码、响应内容等等
prev对象属于SampleResult类,映射的是org.apache.jmeter.samplers.SampleResult
prev用于后置处理器、断言
其常用的一些方法有:
String requestHeaders = prev.getRequestHeaders();//获取请求头
String urlString = prev.getUrlAsString();//获取URL
String responseHeaders = prev.getResponseHeaders();//获取响应头
String contentType = prev.getDataType();//获取DataType
String mediaType = prev.getMediaType();//获取content type中的media type
byte[] responseData = prev.getResponseData();//获取响应体的字节流
String responseDataString = prev.getResponseDataAsString();//获取响应体字符串
String samplerData = prev.getSamplerData();//获取请求内容
1.2、 Failure:
如果断言失败 Failure = true,如果断言成功,Failure = false
失败=真,失败成功,失败=假 失败失败
1.3、 FailureMessage:
断言失败后的提示信息
二、代码示例
2.1、恒等断言
rest.equals(对比对象);
//获取接口相应结果=》实际结果
rest = prev.getResponseDataAsString();
log.error(rest);
//和预期结果进行判断
//预期结果vars.get("expt");
log.error(expt);
//断言:必须使用内置的方法,方法有三种:equals();恒等,contains();包含,matches();正则匹配
//说明Failure是必须的,FailureMessage可有可无
if(rest.equals(expt)){
log.error("测试通过");
Failure = false;
}else{
log.error("测试失败");
Failure = true;
FailureMessage = "断言失败,期望结果是"+expt+":实际结果是"+rest;
}
2.2、包含关系断言
contains():包含:rest.contains(预期结果)
//获取接口响应结果
rest = prev.getResponseDataAsString();
log.error(rest);
//断言
if(rest.contains("百度百度")){
Failure = false;
FailureMessage = "断言失败,实际结果"+rest+"包含期望结果,百度一下你就知道";
log.info("rest");
//FailureMessage = "断言失败";
}else{
Failure = true;
FailureMessage = "断言失败,实际结果"+rest+"包含期望结果,百度一下你就知道";
log.info("rest");
}
2.3、正则匹配断言
matches():正则匹配:rest.matches(正则表达式)
String tel_num = "13834152403111";
if(tel_num.matches("^1[3-9][0-9]{9}$")){
Failure = false;
log.error("标准的11位手机号码");
}else{
Failure = true;
log.error("不是手机号");
FailureMessage = "不是标准手机号";
}
三、jmeter内置方法/对象
3.1、log
打印输出内容,只能打印输出字符串;如果是其它的数据类型需要转换一下
log.error();//打印错误信息
log.warn();//打印警告信息
log.info();//打印详细信息
log.debug();//打印调试信息
log.trace();//
3.2、vars
获取、声明、修改jmeter变量的
vars.get();//获取jmeter变量值
vars.put();//声明、修改jmeter变量
3.3、prev
获取取样器的响应结果
rest = prev.getReaponseDataAsString();//获取请求的响应结果
3.4、Failure
如果断言失败Failure = true,如果断言成功Failure = false
3.5、FailureMessage
自定义的断言消息
3.6、props
修改配置信息
3.7、ctx
上下文