将JDBC请求结果与JSON HTTP请求响应数组数据进行比较

时间:2016-04-26 19:04:09

标签: mysql json jmeter beanshell

我有一个包含如下查询的JDBC请求:

SELECT CUSTOMER_ID, CUSTOMER_NAME, START_DATE, COMPLETE_DATE,          
        NUMBER_OF_FINDINGS FROM CUSTOMER ORDER BY START_DATE;

这会返回70条记录。现在,我有一个JSON HTTP请求,可以从网页中的网格以相同的顺序提取相同的数据。我得到70条记录。如何比较数据库中的数组中的每个值以及JSON响应中的数组?我找到了有关如何检查单个值但不比较2个数据集之间的所有值的信息。我已经尝试了下面的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;
    }

1 个答案:

答案 0 :(得分:0)

你的代码没有多大意义。你使用的Strings对我来说似乎不对,因为Select查询结果通常看起来不像字符串。

这种比较字符串的方法 - json_customerId[intN]将导致Beanshell断言失败,因为字符串不是数组类型。

我建议使用Debug SamplerView Results Tree配置来检查MySQL和JSON中的变量值。如果您未能确定正确的选项 - 使用JDBC Sampler和JSON Path Extractor配置以及要比较的结果JMeter变量值更新您的问题。

目前暂时有一些参考链接: