2017-02-17 137 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