Сравните результаты запроса JDBC с данными массива ответов HTTP-запроса JSON

У меня есть запрос JDBC, содержащий такой запрос:

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

Это возвращает 70 записей. Теперь у меня есть HTTP-запрос JSON для извлечения тех же данных в том же порядке из сетки на веб-странице. У меня 70 пластинок. Как я могу сравнить каждое значение в массивах из БД и в массиве из ответа JSON? Я нашел информацию о том, как проверить одно значение, но не сравнивать все значения между двумя наборами данных. Я пробовал следующее утверждение BeanShell, но оно не работает. Я попытался использовать BSF PostProcessor для помещения значений JSON в переменные, но это тоже не сработало. My Debug Sampler показывает, что получает значения, но не сравнивает их. Приветствуются любые идеи / мысли.

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;
    }

person joCha    schedule 26.04.2016    source источник
comment
Я лично сделал бы это на Java. 1) Создайте класс Customer с помощью метода @override equals 2) загрузите данные из JSON и MySQL 3) сравните два объекта класса Customer с помощью equals. Но чтобы исправить ваш код, 1) поместите Failure = false перед циклом For 2) удалите Failure = false; в условии if 3) (НЕОБЯЗАТЕЛЬНО) перерыв после Failure = true; Я предполагаю, что если одно из полей в 70 записях не совпадает, это должно быть Failure true.   -  person Tin    schedule 26.04.2016


Ответы (1)


Ваш код не имеет большого смысла. вы используете строки, которые не мне кажется правильным, поскольку результат запроса Select обычно не выглядит как строка.

Этот подход к сравнению строк - json_customerId[intN] приведет к сбою утверждения Beanshell, поскольку строка не относится к типу массива.

Я бы предложил использовать Debug Sampler и Просмотреть дерево результатов для проверки значений переменных из MySQL и JSON. Если вам не удалось определить правильный вариант - обновите свой вопрос с помощью конфигураций JDBC Sampler и JSON Path Extractor и результирующих значений переменных JMeter, которые вы хотите сравнить.

А пока вот несколько справочных ссылок:

person Dmitri T    schedule 27.04.2016
comment
поэтому код, который я использовал, работает для общего количества строк (см. ниже), но, похоже, не работает для массива данных. Я новичок в этом, поэтому я уверен, что могу делать что-то не так. Я думал, что мне придется поместить каждое значение в переменную, а затем сравнить переменную db и переменную json, и они должны совпадать. Для справки, вот что работает для одного итогового значения: - person joCha; 28.04.2016
comment
'Строка json_result = vars.get (totalItems); Строка db_result = vars.get (db_count_1); // int json_result = Integer.parseInt (vars.get (totalItems) .trim ()); // int db_result = Integer.parseInt (vars.get (db_count_1) .trim ()); если (json_result.equals (db_result)) {Failure = false; print (считает совпадение + json_result + db_result); } else {Failure = true; FailureMessage = Обнаружена разница, json_result: + json_result + и db_result: + db_result; } ' - person joCha; 28.04.2016
comment
Дело в том, что я никогда не знаю, сколько строк будет возвращено, поэтому я не могу объявлять переменные, как я сделал с одним результатом в приведенном выше коде (db_count_1). - person joCha; 28.04.2016