Получить пустые данные ответа, когда переменная не определена - PullRequest
0 голосов
/ 26 марта 2019

Я пытаюсь использовать следующий код для проверки ответа HTTP Request, который вызывается из Thread Group с помощью Module Controller.

File myfile = new File(FileServer.resolveBaseRelativeName("results/" + filen + "-report.xml"));

if(${__isVarDefined(vars.get("myvar"))} == true){
        FileUtils.writeByteArrayToFile(myfile,bytes);
} else {
        FileUtils.writeStringToFile(myfile, prev.getResponseDataAsString(), "UTF-8");
}

Пусто xml создается, когда myvar переменная пуста, не содержит данных ответа на запрос.

Ответы [ 2 ]

1 голос
/ 26 марта 2019
  1. Вы не можете использовать сокращение vars для извлечения значений из другой группы потоков, поскольку переменные JMeter являются локальными для потока, поэтому к ним нельзя получить доступ из другой группы потоков.Вам нужно использовать props вместо этого.См. документацию :

    Свойства не совпадают с переменными.Переменные являются локальными для потока;свойства являются общими для всех потоков, и на них нужно ссылаться, используя функцию __P или __property.

  2. Не встроенные функции JMeter или переменные в скриптах Groovy , если вам нужно проверить, определена ли переменная или нет - попробуйте получить ее и посмотреть, является ли она null:

    if (vars.get('myvar') != null) {
        //the code will be executed if the var is defined
    }
    

Извлечь Transferring Data and Objects (like List, Maps, Array etc.) Between Samplers and Threads главу Шпаргалка шаблонов Groovy для JMeter для более подробной информации .


В абсолютном большинстве случаев проще использовать Межпоточный плагин связи

1 голос
/ 26 марта 2019

Вы можете написать byte [] в обоих случаях, используя getResponseData () (и удаленный вызов функции)

if(vars.get("myvar") ! null){
    FileUtils.writeByteArrayToFile(myfile, bytes);
} else {
    FileUtils.writeByteArrayToFile(myfile, prev.getResponseData());
}
...