QLExpress alibaba

本文介绍如何在JMeter中使用阿里巴巴的QLExpress框架进行复杂断言表达式的编写,通过示例展示了从CSV文件读取数据并进行JSON解析的过程,适用于自动化测试中的数据驱动场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿里巴巴的开源框架,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 = "断言成功";
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值