如何在Jmeter中从JSON响应中获取JSON请求的值

时间:2017-02-17 12:04:22

标签: json jmeter

长问题所以请耐心等待。 我有多个线程组。

enter image description here

在我的主题组创建用户中,我得到一个respose值,即“UserId”,这是响应。

{"CreateUserResponse":{
     "Header":{"CMMHeader": {"CorrelationId":"UserJmeter1"}},
      "Result":{"ResponseCode":"CM-N-0000","ResponseMessage":"Success"},
      "UserId":"645d026d-95bc-4782-9ad4-c034ef5f0155-1135"}}

现在在另一个线程组中,即“AssignUsersinGroup”我想在其HTTP请求中传递 UserId 的值,即

{
  "AssignUserToApplicationGroupRequest": {
    "Header": {
      "CMMHeader": { "CorrelationId": "123" }
    },
    "ClientContext": {
      "OrganizationId": "1135"
    },
    "UserId": "${UserId}",
    "ApplicationGroupId": "Jmeter1135"
  }
}

现在我在创建用户线程的组中添加了一个JSON路径预处理器。

enter image description here

但它不起作用。我都不能看到请求中发送的内容。 enter image description here

需要帮助。如何从创建用户的响应中获取UserId的值?以及如何将它传递给AssignUserInGroups的Request?

提前致谢!

1 个答案:

答案 0 :(得分:2)

JMeter变量范围仅限于当前的线程组,因此您将无法访问另一个线程组中的变量集。解决方案是使用__setProperty() function将其转换为JMeter属性。 JMeter属性是整个JVM的全局属性,因此您可以在任何地方使用该值。设置后,您可以通过__P() function

访问媒体资源

更好的想法是使用Inter-Thread Communication插件,这样你不仅可以跨线程组共享变量,还可以用于线程同步,即不启动 AssignUsersinGroup 直到 UserId 值被填充。

安装JMeter插件并使其保持最新的推荐方法是使用JMeter Plugins Manager

JMeter Plugins Manager Inter-Thread Communication