首页 > 解决方案 > 我如何从 Jmeter 中的另一个线程接收变量

问题描述

在第一个线程中,我收到了 JSON(格式 - {"id":6054,"name":"Jmeter created chat","description":"jmeter created test"}

我想在第二个线程变量'6054'中使用它

我将 BeanShell 断言与代码一起使用: ${__setProperty(("id":"(.+?)"), ${chat_id)};

但它当然不起作用,请告诉我正确的方法..

非常感谢

标签: javarubyjmeterqa

解决方案


  1. 它不起作用,因为您的__setProperty()函数调用根本没有意义,而且它在语法上不正确
  2. 从 JMeter 3.1 开始,您应该使用 JSR223 测试元素和 Groovy 语言编写脚本

所以

  1. 删除你的 Beanshell 断言

  2. 添加JSR223 PostProcessor作为返回上述响应的请求的子项

  3. 将以下代码放入“脚本”区域:

    props.put('chat_id', new groovy.json.JsonSlurper().parse(prev.getResponseData()).id as String)
    
  4. 在第二个线程组中,使用__P() 函数访问该值:

    ${__P(chat_id,)}
    

演示:

在此处输入图像描述

有关这些prev和这些props人的意思的更多信息,请参阅您应该与 Groovy 一起使用的前 8 个 JMeter Java 类文章


PS您可能会发现线程间通信插件更易于使用


推荐阅读