Условная отправка переменных jmeter с HTTP-запросом

Я использую JMeter для отправки запросов HTTP POST.

Мое тело запроса - это JSON, например что-то вроде {"Var1": "${Var1}","Var2": ${Var2},"Var3":"${Var3}"}.

Они задаются в параметрах HTTP-запросов без имени для параметра. Это отлично работает, и я могу отправлять запросы, используя переменные, которые я установил в препроцессоре beanshell (путем установки переменных и использования vars.put ()).

Мой вопрос в том, как я могу программно отправить через препроцессорную часть параметров? Например:

if(a){
send parameters `{"Var1": "${Var1}","Var2": ${Var2}` as my JSON
}
else {
send parameters `{"Var3":"${Var3}"}` as my JSON
}

vars.remove () у меня не работает, поскольку он удаляет значение из переменной, но все равно отправляет его в запросе (например, как "${Var1}").


person Dionisis    schedule 04.01.2013    source источник


Ответы (3)


Замените препроцессор на Beanshell Sampler, который вычислит логическое значение a и поместит его как var:

vars.put("a", value)

Затем используйте 2 If Controller s, где каждый будет содержать семплер с разными параметрами. .

Условие первого будет $ {a}, и оно будет отрицанием $ {a}.

person UBIK LOAD PACK    schedule 04.01.2013
comment
Но условие «а» зависит от логики внутри препроцессора beanshell. Другими словами, я хочу сделать: if (a.equals (Something), затем отправить var1 и var2 в HTTP POST, иначе отправить var3. Все 3 переменных уже существуют как пары ключ-значение в области отправки параметров с помощью области запроса JMeter HTTP запрос... - person Dionisis; 04.01.2013

Просто воспользуйтесь вкладкой «Body Data». Вы можете условно создать строку JSON, а затем просто «распечатать» переменную в основных данных, используя обычные заполнители.

person Fábio Uechi    schedule 05.09.2014

Самый простой и быстрый способ добиться того, что вы хотите сделать, - использовать JMeter, если контроллер (Добавить -> Логический контроллер -> Если контроллер).

Вы добавляете контроллер if в группу потоков, над которой работаете, и помещаете выражение, которое возвращает логическое значение, в Condition (Javascript по умолчанию). В качестве дочернего узла для контроллера if вы размещаете сэмплер HTTP-запроса, который вы хотите запустить в случае успеха if.

Предположим, вы хотите отправить запрос, если свойство, которое вы передаете JMeter, существует:

${__P(media)}.length > 0

Вы добавляете еще один контроллер if с отрицательным условием для того, что вы только что проверили с помощью другого сэмплера HTTP-запроса.

Готово.

person de.la.ru    schedule 10.02.2017