版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dopamy_BusyMonkey/article/details/89638023
阿里巴巴的开源框架,GitHub地址:https://github.com/alibaba/QLExpress
这里我用来做Jmeter的断言表达式,参考文章:Jmeter 自动化测试
1、表达式直接从csv文件中读取
用到JSONObject,需要引包,不能直接使用Jmeter项目中的路径,由于表达式中带双引号,对于csv文件格式需要用双引号将整个表达式包含。
import org.json.*;
Object dataListObj = RESP.get("dataList");
JSONArray dataArr = new JSONArray((String)dataListObj);
for (int i = 0; i < dataArr.length(); i++) {
JSONObject jsonObj = (JSONObject)dataArr.get(i);
int id = Integer.parseInt(jsonObj.getString("id"));
if (id == 223) {
return false;
}
}
return true;
2、Jmeter断言部分
这里的 vars.get("respData")是事先在BeanShell PostProcessor保存起来的,用于断言表达式判断的输入数据
import com.ql.util.express.DefaultContext;
import com.ql.util.express.ExpressRunner;
import org.json.*;
log.info("响应数据:"+vars.get("respData"));
String respData = vars.get("respData");
JSONObject respJson = new JSONObject(respData);
ExpressRunner runner = new ExpressRunner();
DefaultContext context = new DefaultContext();
context.put("RESP",respJson);
String express = vars.get("EXPRESS");
express = express.substring(1, express.length()-1);
log.info("表达式:"+express);
Object r = null;
try {
r = runner.execute(express, context, null, true, false);
} catch (Exception e) {
e.printStackTrace();
}
log.info("断言结果:"+r);
if (!r) {
Failure = true;
FailureMessage = "断言失败";
} else {
Failure = false;
FailureMessage = "断言成功";
}