2017-02-17 145 views
1

长问题请耐心等待。 我有多个线程组。如何在Jmeter中获取JSON响应JSON请求的值

enter image description here

在我的线程组创建用户,我得到的respose值即“用户ID”,这是效应初探。

{"CreateUserResponse":{ 
    "Header":{"CMMHeader": {"CorrelationId":"UserJmeter1"}}, 
     "Result":{"ResponseCode":"CM-N-0000","ResponseMessage":"Success"}, 
     "UserId":"645d026d-95bc-4782-9ad4-c034ef5f0155-1135"}} 
在另一个线程组即 “AssignUsersinGroup”

现在我想通过用户ID的价值在其HTTP请求即

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

现在我已经在增加了一个JSON路径预处理创建用户线程组。

enter image description here

但它不工作。我也无法看到请求中发送的内容。 enter image description here

需要帮助。我如何从Create User's Response中获取UserId的值?以及如何将它传递给AssignUserInGroups的请求?

在此先感谢!

+0

这https://www.blazemeter.com/blog/knit-one-pearl - 两个-如何使用变量,不同的线程组 –

回答

2

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


访问属性值的更好的主意是使用Inter-Thread Communication插件,这样你将不仅能够跨越线程组也为线程同步,即不要共享变量't start AssignUsersinGroup直到用户标识值被填充。

安装JMeter的插件和它们跟上最新的推荐的方法是使用JMeter Plugins Manager

JMeter Plugins Manager Inter-Thread Communication