2017-03-16 43 views
-1

例子我有我的JDBC請求和響應是這樣的:如何在jmeter中獲取jdbc請求的數組響應?

X  Y  Z 
a1 b1 c1 
a2 b2 c2 
a3 b3 c3 
a4 b4 c4 
a5 b5 c5 
.  .  . 
.  .  . 
.  .  . 

我怎樣才能得到的X,Y和Z的所有值?

然後我有HTTP請求,我打算斷言是否所有的響應都與從JDBC中選擇的數據相匹配。

例如響應:

{ 
    { 
     "x":"a1", 
     "y":"b1", 
     "z": "c1" 
    }, 
    { 
     "x":"a2", 
     "y":"b2", 
     "z": "c2" 
    }, 
    { 
     "x":"a3", 
     "y":"b3", 
     "z": "c4" 
    }, 
    { 
     "x":"a4", 
     "y":"b4", 
     "z": "c4" 
    }, 
    { 
     "x":"a5", 
     "y":"b5", 
     "z": "c5" 
    }, 
    { 
     "x":"a6", 
     "y":"b6", 
     "z": "c6" 
    }, 
    { 
     "x":"a7", 
     "y":"b7", 
     "z": "c7" 
    }, 
    { 
     "x":"a8", 
     "y":"b8", 
     "z": "c8" 
    }, 
    . 
    . 
    .      
    . 
} 

回答

0

JDBC Request sampler documentation

如果提供的變量名稱列表中,然後由SELECT語句返回的每一行,變量設置與價值(如果提供了變量名稱),並且還設置了行數。例如,如果選擇的語句返回2行3列,變量列表是A ,, C,那麼下面的變量將被設置:

A_#=2 (number of rows) 
A_1=column 1, row 1 
A_2=column 1, row 2 
C_#=2 (number of rows) 
C_1=column 3, row 1 
C_2=column 3, row 2 

所以給你提供「變量名」作爲X,Y,Z你應該能夠訪問值${X_1}${Y_2}

JDBC Variable Names

Debugging JDBC Sampler Results in JMeter更詳細的信息與JDBC測試元素結果工作和結果集。

0

您應該聲明「變量名稱」字段並聲明結果變量名稱,如下所示。

JDBC ReqestSampler config view

然後你可以使用_1 _2方法訪問它們。請在下面找到您可以在beanshell後期處理器中使用的示例代碼。

import java.util.ArrayList; 
import net.minidev.json.parser.JSONParser; 
import net.minidev.json.JSONObject; 
import net.minidev.json.JSONArray; 

ArrayList items = vars.getObject("result1"); 


for (int i = items.size() - 1; i >= 0; i--) { 
    JSONObject jsonitemElement = new JSONObject(); 
    jsonitemElement.put("x", vars.get("x_" + (i + 1))); 
    jsonitemElement.put("y", vars.get("y_" + (i + 1))); 
    jsonitemElement.put("z", vars.get("z_" + (i + 1))); 
    log.info(jsonitemElement.toString()); 
} 

由於要獲得這些值作爲從HTTP請求的響應有效載荷的響應,應添加的代碼解析,在斷言或後處理器JSON響應,並使用從上述的元素進行比較示例代碼。

需要注意的是 - 不同的應用程序以任何順序發送目標JSON。因此,不能保證HTTP響應總是將響應發送爲A1,B1,C1-A2,B2,C2等。它可以以任何以A5,B5,C5等開始的順序發送它們。最好是使用散列表或編寫數組比較來確保結果集與HTTp響應完全匹配。

相關問題