Как проверить ответ json в оболочке bean и выполнить какое-либо действие, если ответ не соответствует ожидаемому в jmeter? - PullRequest
0 голосов
/ 06 февраля 2019

Я хочу извлечь ответ json в jmeter, и если ответ не такой, как ожидалось, мне нужно распечатать его в CSV-файл.

Я попытался с помощью метода contains проверить, содержит ли ответОжидаемое ключевое слово, но оно не работает.Есть ли другой способ сделать это?

Пример кода здесь:

log.info(ctx.getPreviousResult().getResponseDataAsString());

r = ctx.getPreviousResult().getResponseCode();

d = ctx.getPreviousResult().getResponseDataAsString();

if(!d.contains("valid")){

p.println(r +","+ vars.get("email") +",");

}

Это мой ответ json

{
     "isBlueLinkServicePinValid": "valid"
}

Я проверяю ключевое слово "valid "

if(!d.contains("valid"))

Но это не похоже на работу?

TIA

1 Ответ

0 голосов
/ 06 февраля 2019
  1. Начиная с JMeter 3.1, не рекомендуется использовать Beanshell для сценариев , вместо этого вам следует использовать тестовые элементы JSR223 и язык Groovy.Основная причина в том, что Groovy имеет гораздо лучшую производительность, чем Beanshell .

  2. Groovy имеет встроенную поддержку JSON , поэтому вы можете извлечь значение атрибута isBlueLinkServicePinValid простым способом:

    String response = prev.getResponseDataAsString();
    log.info("Response: " + response)
    String valid = new groovy.json.JsonSlurper().parseText(response).isBlueLinkServicePinValid
    log.info("Valid: " + valid);
    if (valid.equals("valid")) {
        log.info("Do something");
    }
    else {
        log.info("Do something else");  
    }
    

    Демонстрация:

    enter image description here

...