Как включить результат сценария groovy в тело HTTP-запроса POST в JMeter? - PullRequest
0 голосов
/ 12 февраля 2020

С помощью скрипта groovy, написанного в препроцессоре BeanShell, я генерирую случайный объект JSON с некоторыми параметрами. Я не могу включить созданный объект (я использовал JsonBuilder в скрипте) в тело HTTP-запроса POST в JMeter. Это фрагмент моего сценария, в котором я создаю свой JSON объект:

...
def json = new JsonBuilder();
def root = json parameter1: value1, parameter2: value2, parameter3: value3, parameter4: value4;

bsh.shared.root.process();
vars.put("BODY", root.toString());

Я хочу передать этот объект в раздел BODY DATA запроса HTTP POST в JMeter:

${BODY}

Это сгенерированные данные ответа:

The request content was malformed:
Unexpected character '$' at input index 0 (line 1, position 1), expected JSON Value:
${BODY}
^

1 Ответ

0 голосов
/ 12 февраля 2020

Вы не можете использовать Groovy в препроцессоре Beanshell, поскольку Groovy и Beanshell - разные звери.

Например, ключевое слово def, которое вы пытаетесь использовать , существует в Groovy, но не существует в Beanshell, и если вы откроете jmeter.log В файле вы увидите следующее:

BeanShellInterpreter: ошибка при вызове b sh метод: eval Исходный файл: встроенная оценка: `` def json = new JsonBuilder (); '': Typed объявление переменной: Класс: def не найден в пространстве имен

Так как ваш скрипт завершается ошибкой в ​​самой первой строке, ваша переменная ${BODY} не определена и отправляется как есть Сэмплер HTTP Request, следовательно, вы получаете эту ошибку.

Переключитесь на препроцессор JSR223, убедитесь, что в раскрывающемся списке «Язык» выберите groovy, и дважды проверьте, нет ли ошибок в файле jmeter.log .

Дополнительная информация:

...