jmeter之BeanShell使用:取响应结果值

一.使用场景

(1)通过beanshell提取接口响应报文中值

二.需要jar包

import org.json.*;

三.代码

使用java代码,将response结果转换为json,转换为json格式后,使用json树状结构提取出来对应值

 

BeanShell 后置处理程序 :

import org.json.*;


String responsedata = prev.getResponseDataAsString();
JSONObject data_obj = new JSONObject(responsedata);

String moExpReqTypeId=data_obj.get("data").get("moExpReqTypeId").toString();
String expRequisitionHeaderId=data_obj.get("data").get("expRequisitionHeaderId").toString();
String expRequisitionNumber=data_obj.get("data").get("expRequisitionNumber").toString();

vars.put("moExpReqTypeId",moExpReqTypeId);
vars.put("expRequisitionHeaderId",expRequisitionHeaderId);
vars.put("expRequisitionNumber",expRequisitionNumber);
log.info("获取单据-moExpReqTypeId,expRequisitionHeaderId :"+moExpReqTypeId+","+expRequisitionHeaderId);

vars.put("变量名",“值”);

后续接口调用时可调用 变量名

后续接口如何引用:

使用jmeter 中常用的参数传递格式 ${变量名}

JMeter测试中,如果使用后置处理器将结果报文写入CSV文件,并发现第一行数据为空的问题,通常是由以下几个原因引起的: ### 可能的原因及解决方案 #### 原因一:初始化文件时未正确清空内容 如果你每次运行脚本前没有清理目标CSV文件的内容,则可能会保留上一次的结果,在新数据写入之前形成空白的第一行。 **解决办法**: 可以添加一个 **setUp Thread Group** 或者单独的线程组来在正式测试开始前先删除旧的CSV文件或将其内容清空。例如通过 `OS Process Sampler` 调用命令清除文件,或者直接手动创建一个新的CSV文件并设置好标题栏等信息。 ```jmeter File file = new File("your_file_path.csv"); if (file.exists()) { file.delete(); } ``` #### 原因二:首次触发时未生成实际 有些情况下可能是由于某些变量只会在后续请求响应之后才真正有有效返回给表达式解析器所导致第一次尝试获不到预期的数据而造成缺失现象. **处理步骤:** 确认是否所有需要记录到csv中的字段都在每一轮循环内都被正常赋过有效的初识状态再存储进去;另外检查BeanShell/JSR223 PostProcessor里面关于读response data 的逻辑是否存在漏洞漏掉了初始部分。 示例代码(适用于JSR223 Processor): ```groovy def resultData = prev.getResponseDataAsString() new File('path_to_your_csv').withWriterAppend { writer -> if (!prev.isSuccessful() || !resultData?.trim()){ log.warn "Empty response for sampler: ${prev.getSampleLabel()} " } else{ // 将非空的结果写入 CSV 文件中... writer.writeLine(resultData) } } ``` #### 原因三:写入流程设计不当 有时是因为写入操作被放置于错误的位置所致——比如放在了一个尚未接收到任何服务器反馈就急于执行动作的地方。 建议调整顺序使得只有当确信已有完整数据集可供利用后再做持久化保存即可消除该异常状况的发生几率。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海是倒过来的天~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值