before
win 10 + jmeter 5.2.1
本篇来学习在JMeter中常用断言:
- 响应断言
- 大小断言
- json断言
- beanshell断言
来看看都是怎么用的。
响应断言
http://www.neeo.cc:6001/get?stock=10 # get
来,新建一个线程组,添加两个"HTTP请求"取样器,配置如下,其实两个配置一样的........
来看如何添加响应断言:
重要的参数说明:
Apply to
,保持默认吧Field to Test
,断言的内容来自于:Test Response
响应体Response Code
响应状态码Response Message
响应信息Response Headers
响应头Request Headers
请求头Request Data
请求体URL Sampled
请求的URL
Patterns Matching Rules
,断言(匹配)规则:Container
:响应文本中是否包含某个字段值,支持正则Matches
:响应文本是否完全匹配预期值,支持正则Equals
:响应文本是否完全匹配预期值,不支持正则Substring
:响应文本中是否包含某个字段值,不支持正则
Patterns to Test
,编写你的断言Custom failure message
,自定义的断言失败信息
你可以根据具体的场景来写的断言。
这里我们为第一个请求添加断言,配置如下:
上面两个断言结果,一个成功,一个失败。
再来看第二个请求的断言配置:
最终的"察看结果树"的执行结果:
大小断言
http://www.neeo.cc:6001/get?stock=10 # get
来看"HTTP请求"配置和执行结果:
我们从"察看结果树"中得到2个数据,接下来使用大小断言来进行判断:
来看两个"大小断言"的配置:
"大小断言"的各个参数读起来一点不难,我也不用再说了,大家一看就懂;断言结果肯定都通过,我也不贴图了!
json断言
如果响应体是json类型的话,断言使用"json断言"比"响应断言"更方便。
http://www.neeo.cc:6001/get?stock=10 # get
# 响应结果
{
"args": {
"stock": "10"
},
"headers": {
"Connection": "keep-alive",
"Host": "www.neeo.cc:6001",
"User-Agent": "Apache-HttpClient/4.5.10 (Java/1.8.0_201)"
},
"origin": "222.35.243.75",
"url": "http://www.neeo.cc:6001/get?stock=10"
}
"json断言"内部对json路径及值的判断,可以参考json-path/JsonPath,一路点下去就行了,这里不存在同级路径下key重复的问题。
在线程组内添加"HTTP请求",配置和结果如下:
再来看如何添加"json断言":
看看怎么配置:
json断言相当的简单,就是判单之指定的路径下是否存在指定的key,顶多给同时判断key对应的value是否等于某个值。
beanshell断言
在beanshell中有个内置变量Failure
boolean(false表示断言成功,true表示断言失败)变量,用来控制断言,断言失败使用FailureMessage
显示失败日志。
来个需求,如下接口:
/pinter/com/getSku # get请求 参数:id=1
# 返回
{"code":"0","message":"success","data":{"skuId":523,"skuName":"ptest-523","price":"912","stock":649,"brand":"testfan"}}
判断,如果返回的stock
值大于等于500断言成功,否则失败。
新建一个线程组,并设置1个线程循环3次,添加一个HTTP取样器,然后配置后置json提取器,提取stock值:
现在,是时候来个beanshell断言了啊:
上代码:
prev.setDataEncoding("utf-8"); // 如果响应乱码,就添加这一行
// 获取json提取器中提取的stock值
String mystock = vars.get("stock");
// 转下类型
int intstock = Integer.parseInt(mystock);
// beanshell断言
if (intstock >= 500){
Failure = false; // 断言成功
}else{
Failure = true; // 断言失败
// 自定义断言信息
FailureMessage = "断言失败,stock值是: "+mystock;
};
配置和结果如下:
beanshell断言就这么简单!