JMeter中如何将Beanshell后置处理器的计数值传入Beanshell断言做比较
步骤1:在Beanshell PostProcessor中存储统计值到JMeter变量
你原有代码的基础上新增一行,将统计得到的count值写入JMeter全局可访问的变量池:
import org.apache.commons.lang.StringUtils; String response = new String(data); int count = StringUtils.countMatches(response, ".xml"); // 新增这行,将count转为字符串存入名为xmlFileCount的JMeter变量 vars.put("xmlFileCount", String.valueOf(count));
vars是JMeter为所有BeanShell组件内置的变量操作对象,存入的变量可以在同一线程组内的所有后续组件中读取。
步骤2:在Beanshell Assertion中读取变量并完成校验
直接在Beanshell Assertion中写入以下代码,按需调整阈值即可:
// 读取存储的统计值,转为整数类型 int actualCount = Integer.parseInt(vars.get("xmlFileCount")); // 此处替换为你需要比较的目标整数值,比如要求最少返回5个xml文件就填5 int expectedMinCount = 5; if (actualCount <= expectedMinCount) { // 不满足条件时标记断言失败,设置失败提示信息 Failure = true; FailureMessage = "XML文件数量不达标,预期最少" + expectedMinCount + "个,实际返回" + actualCount + "个"; }
注意事项
- 两个组件中使用的变量名
xmlFileCount必须完全一致,否则会读取为空导致报错 - 如果需要动态调整阈值,可以在「用户定义的变量」组件中新增变量
expectedMinCount,断言中直接用int expectedMinCount = Integer.parseInt(vars.get("expectedMinCount"));读取即可 - 确保Beanshell PostProcessor的执行顺序在Beanshell Assertion之前,JMeter同一层级下组件按从上到下的顺序执行
内容的提问来源于stack exchange,提问作者theartsycoder
相关产品推荐
相关产品推荐

