Утверждение JMeter: Ошибка при сравнении переменных - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь подтвердить свои данные ответа API значением, полученным из базы данных.

Мой код не может сравнить мои переменные, если я не добавлю toString() в обе мои переменные.Есть ли способ обойти это или toString() обязательный?

Код, о котором идет речь:

Boolean comparision = false;
for (int i; i < vars.getObject("dbData").size(); i++) {    
if (vars.getObject("dbData").get(i).get("DbData").toString().equals(${codeid_API}.toString()))
{
    comparision = true;            
}     
} 

${codeid_API} - это переменная, в которой я хранил свои данные ответа API.(vars.getObject("dbData").get(i).get("DbData") получает значение из моей БД.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Не вставляйте переменные JMeter в виде ${codeid_API} в скрипты Groovy, в случае кэширования включенных скомпилированных скриптов это будет разрешено только один раз , и это может нарушить логику вашего скрипта.

Попробуйте заменить его на vars.get('codeid_API), вместо которого vars - сокращение для JMeterVariables экземпляр класса

Цитата из JSR223 Sampler документация:

JMeter обрабатывает ссылки на функции и переменные перед передачей поля скрипта интерпретатору, поэтому ссылки будут разрешены только один раз.Ссылки на переменные и функции в файлах сценария будут дословно передаваться интерпретатору, что может вызвать синтаксическую ошибку.Чтобы использовать переменные времени выполнения, пожалуйста, используйте соответствующие методы props, например,

props.get("START.HMS");

props.put("PROP1","1234");

Дополнительная информация: Отладка результатов JDBC Sampler в JMeter

0 голосов
/ 13 февраля 2019

Вы можете использовать Objects.equals вместо

Objects.equals(vars.getObject("dbData").get(i).get("DbData"), ${codeid_API});

Возвращает true, если аргументы равны друг другу, и false в противном случае.

Для целых чисел вы можете сравнить, используя == и использовать as int для приведения

if (vars.getObject("dbData").get(i).get("DbData") as int == vars.get("codeid_API") as int );
...