Как передать JSON-ответ от http-запроса на утверждение jsr223, используя groovy в Jmeter? - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть API, который возвращает следующий результат:

{"success":true,
  "error":null,
  "data": {"EmpId":444,"ProfileNo":0,"ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}}

Мне нужно передать выше утверждение JSON для утверждения JSR223, чтобы проверить все выходные значения по отдельности. Мне удалось написать следующий скрипт

import groovy.json.JsonSlurper;
JsonSlurper JSON = new JsonSlurper ();

def expected = new groovy.json.JsonSlurper().parseText(vars.get('Employee 
data'))
def actual = new 
groovy.json.JsonSlurper().parse(prev.getResponseData({"success":true,
"error":null,
"data":

{"EmpId":444,
 "ProfileNo":0,
 "ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}})

 if (expected != actual) {
 AssertionResult.setFailure(true)
 AssertionResult.setFailureMessage('Mismatch between expected and actual 
 JSON')
  }

Но он не работает. Я получаю сообщение об ошибке следующим образом:

Ошибка подтверждения: true Ошибка подтверждения: false Сообщение об ошибке подтверждения: javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: сбой запуска: Script20.groovy: 10: ожидается '}', найдено ':' @ строка 10, столбец 81. rev.getResponseData ({"success": true, ^

1 ошибка

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Вы можете использовать утверждение json для проверки значения, как показано ниже: -

Запрос Json с ответом (используется фиктивный Samlper) enter image description here

Укажите путь подтвержденияи ожидаемая стоимость. enter image description here Ниже у меня есть изменение значения, чтобы увидеть, работает ли оно, и потерпеть неудачу, если изменение значения. Остальное работает как положено. enter image description here

Надеюсь, это поможет. Это не связано с JSR223, но использует утверждение json.

0 голосов
/ 04 ноября 2019

Правильный код будет выглядеть примерно так:

def expected = new groovy.json.JsonSlurper().parseText('{"success":true,\n' +
        '  "error":null,\n' +
        '  "data": {"EmpId":444,"ProfileNo":0,"ProfileName":"xya","Rank":0,"ScoreValue":0,"CompanyEmpID":"A25842"}}')

def actual = new groovy.json.JsonSlurper().parse(prev.getResponseData())

if (expected != actual) {
    AssertionResult.setFailure(true)
    AssertionResult.setFailureMessage('Mismatch between expected and actual JSON ')
}

Однако он будет работать только для значений первого уровня, если вы будете использовать подход для сравнения вложенных объектов JSON - вы получите ложноположительные результаты,так что было бы лучше выбрать, например, библиотеки Джексона или JSONAssert , которые выполняют "глубокое сканирование", посмотрите Самый простой способ сравнения ответов REST API с использованием JMeter статья для более подробной информации.

...