2016-11-10 51 views
1

從csv文件的JSON數組空值我有jsonarray由於這些[foodid1,foodid2,foodid3] .The值從一個CSV文件中讀取排除在JMeter中

csv文件內容

foodid1,foodid2,foodid3 
10,12,14 

如果我不想將該值傳遞給foodid2,JSON數組正在傳遞爲[10,,14]

取而代之,我希望它以[10,14]的形式傳遞。

以下是JSON體:

customerdetails={ 
    "regDate":${regDate}, 
    "regNo":"${regNo}", 
    "firstName":"${fname}", 
    "lastName":"${lname}", 
    "dateOfBirth":"${dob}", 
    "bloodGroupId":0, 
    "mobileNo":"${mobile}", 
    "residenceNo":"${resdno}", 
    "officeNo":"${officeno}", 
    "email":"${email}", 
    "address1":"${adr1}", 
    "address2":"${adr2}", 
    "pincode":"${pin}", 
    "stateId":${stateid}, 
    "city":"${city}"} 
&customerhistory={ 
"historyId":[${food1},${food2},${food3},${food4}]} 

我怎麼能處理的JMeter這種情況下提前

感謝

+0

嘗試使用BeanShell預處理器並根據需要格式化數據,將其存儲在變量中,然後在請求中使用它。你可以請分享CSV數據集配置和HTTP採樣器截圖 –

回答

1

最簡單的解決方案將採用單逗號在運行時被替換雙逗號使用Beanshell PreProcessor

  1. 將Beanshell預處理器作爲HTTP請求的孩子你要修改
  2. 將下面的代碼放入預處理器的「腳本」區域:

    import org.apache.jmeter.config.Arguments; 
    import org.apache.jmeter.config.Argument; 
    import org.apache.jmeter.protocol.http.util.HTTPArgument; 
    
    Arguments oldArgs = sampler.getArguments(); 
    Arguments newArgs = new Arguments(); 
    
    for (int i = 0; i < oldArgs.getArgumentCount(); i++) { 
        Argument argument = oldArgs.getArgument(i); 
        String oldValue = argument.getValue(); 
        String newValue = oldValue.replaceAll(",,", ","); 
        newArgs.addArgument(new HTTPArgument(argument.getName(), newValue)); 
    } 
    
    sampler.setArguments(newArgs); 
    

    當你運行你的測試預處理器將與,取代,,爲每個參數值。

有關在JMeter測試中使用Beanshell的更多信息,請參閱How to Use BeanShell: JMeter's Favorite Built-in Component