jmeter - Jmeter 后处理器和控制器
问题描述
我有一个带有以下代码的后处理器。
import test.MFG
MFG mfgRepo = new MFG();
log.info("device {}","${deviceID}");
long crashTime= ${p1};
String deviceId1="${deviceID}";
log.info("the crashtime is {}",crashTime);
List<Map<String,Object>> dbItem = mfgRepo.getItemFromDB("TEST",deviceId1,crashTime);
log.info("The item is {}",dbItem.get(0).get("info"));
上面的 deviceID 和 p1 是在每个请求中变化的变量,例如 testdevice1,testdevice2... 而 p1 是不同的时间戳。当这些值在后处理器中运行时,只有第一个请求值在所有后处理器中被处理。我究竟做错了什么?如何在 while 控制器中实现相同的验证,该控制器将测试 dbItem.get(0).get("info") 对于并发线程组中发出的每个请求是否不为空。
解决方案
JSR223 测试元素具有可以显着提高性能的特性(编译)。要从此功能中受益:
- 使用脚本文件而不是内联它们。如果此功能在 ScriptEngine 上可用,这将使 JMeter 编译它们并缓存它们。
- 或使用脚本文本并检查缓存已编译的脚本(如果有可用的属性)。
使用此功能时,请确保您的脚本代码不直接在脚本代码中使用 JMeter 变量或 JMeter 函数调用,因为缓存只会缓存第一个替换。而是使用脚本参数。
所以改变你的:
${deviceID}"
至vars.get('deviceID')
${p1}
至vars.get('p1') as long
- 等等
wherevars
是JMeterVariables类实例的简写,请参阅 JavaDoc 以获取可用函数和属性的完整描述,以及Top 8 JMeter Java Classes You Should Be Using with Groovy文章以获取有关使用此JMeter API简写以及可用于JSR223 测试元素的其他简写的更多信息
推荐阅读
- python - 将矩阵保存到数组中
- python - python中不以连字符开头的单词的正则表达式
- java - ANTLR v4 运行时 Java 包无法识别
- reactjs - 为什么我的 React js 按钮 onMouseDown 不起作用?
- rest - 带有 Jenkins 的 SOAP Web 服务
- html - 如何使用 jquery 创建滑动循环?
- javascript - 如何在不丢失页面的情况下使用 JS 提交表单
- nlp - 问题方向 - 文本数据 - 对话分类
- javascript - 如何调试仅在真实 iPhone 中出现的错误?
- php - LARAVEL 8 - $REQUEST->NAME 返回 NULL