Рандомизировать данные для отправки в виде тела запроса в Jmeter в зависимости от другого набора случайных данных - PullRequest
0 голосов
/ 22 ноября 2018

Я новичок в написании скриптов в Jmeter, и я попробовал некоторые функции.Я пытаюсь сделать следующее:

У меня есть POST-запрос с идентификатором клиента в качестве переменной пути, но я рандомизирую его:

http://endpoint/customers/${__RandomFromMultipleVars(customerId1|customerId2|customerId3, customer_id)}/verify

Строка выше работает,и это получает случайное значение среди трех идентификаторов клиентов, запрос может привести к этому:

http://endpoint/customers/6fb5ef21-6b3e-4564-952f-e83df63a9907/verify

customerId1, customerId2 и customerId3 пришли из элемента конфигурации: User Define Variables

Теперь, в теле ответа, у меня есть этот отличный сценарий вместо реального тела запроса JSON:

${__groovy(
    if ("${customer_id}" == "6fb5ef21-6b3e-4564-952f-e83df63a9907") {

    } else if ("${customer_id}" == "8f0b21e5-ddf6-42d4-b07e-6da09db6a611") {

    } else if ("${customer_id}" == "40aa4f1b-424b-40d2-8213-36a39f5c98b2") {

)}

Мой вопрос: я не знаю, возможно ли это, но для каждого оператора if я хочучтобы снова рандомизировать тело запроса в зависимости от установленного идентификатора клиента.

Я пытался сделать:

if ("${customer_id}" == "6fb5ef21-6b3e-4564-952f-e83df63a9907") {
    ${__RandomFromMultipleVars(resp1|resp2|resp3)}          
}

Но это привело к ошибке.Я попытался просто вернуть простую строку:

if ("${customer_id}" == "6fb5ef21-6b3e-4564-952f-e83df63a9907") {
   "TEST"       
}

И это работает, строка "TEST" использовалась в качестве тела запроса.Я действительно не уверен, как двигаться дальше с этим.Я ценю любые комментарии или предложения.Спасибо!

1 Ответ

0 голосов
/ 22 ноября 2018

Согласно документации JSR223 Sampler :

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

props.get("START.HMS");

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

. Помните, что вам не следует вставлять Функции JMeter и / или переменные вGroovy скрипты .Вместо того, чтобы обращаться к переменным, таким как ${customer_id}, вы должны использовать сокращенную запись vars , вместо этого она обозначает JMeterVariables экземпляр класса.

Если вы хотите продолжить работу с __ groovy () , то синтаксис, который вы ищете, должен выглядеть примерно так:

${__groovy(if (vars.get('customer_id').equals('6fb5ef21-6b3e-4564-952f-e83df63a9907')) { return vars.get('resp' + org.apache.commons.lang3.RandomUtils.nextInt(1\, 4))},)}

Демо:

  • Переменные, определенные на уровне плана тестирования

    enter image description here

  • Groovy-скрипт в действии:

    enter image description here

Дополнительная информация о скриптах Groovy в JMeter: Apache Groovy - почему и как его использовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...