JMeter技术问题:如何从Sample Result标签页提取Properties数据
可以提取JMS Properties数据!
当然没问题,不管是通过JMeter自带的提取器工具,还是用脚本直接访问JMS属性API,都能轻松从Sample Result里拿到你需要的Properties数据,下面给你两种实用的方法:
方法一:正则表达式提取器
利用Sample Result响应文本里的Properties内容格式,用正则匹配目标值:
- 给JMS Subscriber请求添加一个正则表达式提取器
- 配置参数:
- 引用名称:比如
NAME_VALUE - 正则表达式:
NAME\s+(\S+) - 模板:
$1$ - 匹配数字:
1
- 引用名称:比如
- 同理,要提取
OP的值就用正则OP\s+(\S+),以此类推
这种方法适合快速提取,但依赖响应文本的格式,如果Properties的输出格式有变化,正则可能会失效。
方法二:JSR223 PostProcessor(推荐)
直接通过JMeter的API访问Sample Result里的JMS属性,这种方式更稳定可靠:
- 给JMS Subscriber请求添加一个JSR223 PostProcessor,选择
groovy作为脚本语言 - 输入以下脚本,就能提取所有JMS Properties并保存为JMeter变量:
// 获取当前Sample Result的JMS属性集合 def jmsProperties = prev.getJMSProperties() // 遍历所有属性,存到JMeter变量(变量名前缀为JMS_) jmsProperties.each { key, value -> def varName = "JMS_${key}" vars.put(varName, value.toString()) log.info("已保存JMS属性 ${key} 到变量 ${varName},值为:${value}") } // 如果只需要提取单个属性,比如NAME def nameValue = jmsProperties.get("NAME") if (nameValue != null) { vars.put("NAME_VALUE", nameValue.toString()) }
- 之后你就可以在后续请求里用
${JMS_NAME}、${NAME_VALUE}这样的变量引用提取到的值了
这种方法不依赖响应文本格式,是官方推荐的方式,性能也更好(Groovy脚本比BeanShell快很多)。
内容的提问来源于stack exchange,提问作者Taz 3497
相关产品推荐
相关产品推荐

