2016-09-13 37 views
1

我有兩個請求,第一個是GET,第二個是PUT。我應該從GET請求收到響應數據,稍微修改一下,然後用PUT請求發送。到目前爲止,我設法完成了所有工作,除了修改響應數據。JMeter修改使用PUT的GET響應

對於GET請求,我用正則表達式提取的預處理: parsing get

而且目前我發送PUT請求,而無需修改數據: sending put

JSON結構:

{ 
    "property1" : 1, 
    "property2" : "2", 
    "innerPropery" : { 
    "innerProperty1" : "value1", 
    "innerProperty2" : "value2", 
    "innerProperty3" : "value3" 
    } 
} 

我應該改變innerProperty2。

謝謝!

回答

3

您可以在沒有正則表達式提取器臨時步驟的情況下執行此操作。

  1. 添加JSR223 PostProcessorgetForm請求的孩子
  2. 選擇groovy在 「語言」 下拉
  3. 將下面的代碼爲 「腳本」 區域:

    import groovy.json.JsonBuilder 
    import groovy.json.JsonSlurper 
    
    def response = prev.getResponseDataAsString() 
    def json = new JsonSlurper().parseText(response) 
    
    def builder = new JsonBuilder(json) 
    builder.content.property2 = '2.1' 
    
    vars.put("response", builder.toPrettyString()) 
    
  4. saveForm請求使用${response}作爲請求主體

參考文獻:

0

我已經設法通過BeanShell PostProcessor來做到這一點。首先,我添加了一個新的BeanShell PostProcessor:單擊getFrom,Add - > Post Processors - > BeanShell PostProcessor上的右鍵。從那以後,我打開了reated BeanSChell,並寫在腳本字段中輸入以下代碼:

responseString = vars.get("response"); 
log.info("Received response: " + responseString); 
responseString = responseString.replace("\"prop1\" : \"value2\"", "\"prop1\" : \"value2.1\""); 
log.info("Response to send: " + responseString); 
vars.put("modifiedResponse", responseString); 

在參數字段我已經寫:

response 

最後,我改變了PUT請求的身體

${response} 

${modifiedResponse}