【发布时间】:2016-04-26 19:04:08
【问题描述】:
我有一个 JDBC 请求,其中包含如下查询:
SELECT CUSTOMER_ID, CUSTOMER_NAME, START_DATE, COMPLETE_DATE,
NUMBER_OF_FINDINGS FROM CUSTOMER ORDER BY START_DATE;
这将返回 70 条记录。现在,我有一个 JSON HTTP 请求,可以以相同的顺序从网页的网格中提取相同的数据。我得到了 70 条记录。如何比较数据库中的数组和 JSON 响应中的数组中的每个值?我找到了有关如何检查单个值但不比较两个数据集之间的所有值的信息。我已经尝试了下面的 BeanShell 断言,但它不起作用。我尝试使用 BSF PostProcessor 将 JSON 值放入变量中,但这也不起作用。我的调试采样器显示它正在获取值,但似乎没有比较它们。任何想法/想法将不胜感激。
String json_customerId = vars.get("customer_id");
String json_customerName = vars.get("customer_name");
String json_startedOn = vars.get("started_on");
String json_completedOn = vars.get("completed_on");
String json_numberOfFindings = vars.get("number_of_findings");
String db_customerId = vars.get("customer_id");
String db_customerName = vars.get("customer_name");
String db_startedOn = vars.get("started_on");
String db_completedOn = vars.get("completed_on");
String db_numberOfFindings = vars.get("number_of_findings");
int intN = 0
For (intN=0; intN=totalItems; intN++)
if (json_customerId[intN].equals(db_customer_id[intN]))
{
Failure = false;
print("counts match" + json_customerId + db_customer_id);
} else {
Failure = true;
FailureMessage = "Difference detected, json_result: " +
json_customerID >+ " and db_result: " + db_customer_id;
}
【问题讨论】:
-
我个人会在 Java 中这样做。 1) 使用@override equals 方法创建 Customer 类 2) 从 JSON 和 MySQL 加载数据 3) 使用 equals 比较 Customer 类的两个对象。但是要修复您的代码,1)在 For 循环之前放置
Failure = false2)在 if 条件中删除您的Failure = false;3)(可选)在Failure = true;之后中断我假设如果 70 条记录中的一个字段不匹配,它应该是“失败”为真。
标签: mysql json jmeter beanshell