JMeter常用断言

Duriation Assertion

用于判断响应时间是否符合要求,仅需要填入期望的上限即可,单位为ms


Size Assertion

用于判断ResponseSize是否符合要求。需要选择判断条件,和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中出现列出的错误。


猜你喜欢

转载自blog.csdn.net/daihuimaozideren/article/details/79746381