Duriation Assertion
用于判断响应时间是否符合要求,仅需要填入期望的上限即可,单位为ms。
Size Assertion
用于判断Response的Size是否符合要求。需要选择判断条件,和Size即可。
Response Assertion
用于判断Response是否符合期望值。
从图中可以看到,操作比较简单,只需要选择想要比对的项目,比对方式,以及期望值即可。图例中,给出的是对Response Code的检查,期望值为200。当期望值不匹配时,Report将显示“Response Code mismatch”为标题的错误。
BeanShell Assertion
个人认为BeanShell断言是最为灵活的,毕竟你可以使用代码完成你想要的任何个性化检查。
如果存在BeanShell PostProcess,则BeanShell Assertion在其后运行。
可以通过prev.getResponseDataAsString获取响应数据。
示例如下。
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
JSONObject object=JSONObject.parseObject(prev.getResponseDataAsString());
System.out.println("stateWord = "+object.getInteger("stateWord"));
if(object.getString("msg")!=null){
log.info("msg = "+object.getString("msg"));
}else {
log.info("Wrong JSON Fromat, do not find msg");
}
if(object.getString("time")!=null){
log.info("time = "+object.getString("time"));
}else {
log.info("Wrong JSON Fromat, do not find time");
}
if(object.getJSONArray("data")!=null){
JSONArray jsonArray=object.getJSONArray("data");
if(jsonArray.size()<1){
log.info("Wrong JSON Fromat, do not find any data in data list");
}else {
for (int index=0;index<jsonArray.size();index++){
JSONObject obj=jsonArray.getJSONObject(index);
log.info("stateWord = "+obj.getInteger("stateWord"));
if(obj.getString("CustomDataLen")!=null){
log.info("CustomDataLen = "+obj.getString("CustomDataLen"));
}else {
log.info("Wrong JSON Fromat, do not find CustomDataLen");
}
if(obj.getString("CustomData")!=null){
log.info("CustomData = "+obj.getString("CustomData"));
}else {
log.info("Wrong JSON Fromat, do not find CustomData");
}
if(obj.getString("Signature")!=null){
log.info("Signature = "+obj.getString("Signature"));
}else {
log.info("Wrong JSON Fromat, do not find Signature");
}
}
}
}else {
log.info("Wrong JSON Fromat, do not find data");
}
下图为加入断言后,Report中出现列出的错误。