示例我有我的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 :(得分:0)
根据JDBC Request sampler documentation:
如果提供了“变量名称”列表,则对于Select语句返回的每一行,将使用相应列的值设置变量(如果提供了变量名称),并且还设置了行数起来。例如,如果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测试元素结果和结果集的更多详细信息,请参阅Debugging JDBC Sampler Results in JMeter。
答案 1 :(得分:0)
您应该声明"变量名称"字段并声明结果变量名称,如下所示。
然后您可以使用_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响应。