Пустой CSV-файл при использовании BeanShell Postprocessor - PullRequest
0 голосов
/ 21 ноября 2019

Я пытаюсь сохранить мои переменные в CSV-файл с помощью постпроцессора BeanShell, код:

String id = "${userID}";
FileWriter fstream = new FileWriter("JmeterBean.csv",true);
fstream.write(id+"\n");
fstream.close();

План тестирования:

  1. HTTP-запрос GetUsersById => вернуть все идентификаторы

  2. Json Extractor => из моего ответа

    {"@class":"com.test.dto.userDTO",
          "author":"John",
          "id":"89BC331D723F",  },
    
    
    {"@class":"com.test.dto.userDTO",
          "author":"Alex",
          "id":"FTH7JBDRF567",
       }
    
    • Имя переменной: userID
    • JSON-выражение пути:$.[?(@.@class=='com.test.dto.userDTO')].id
    • Номера совпадений: -1
  3. Постпроцессор BeanShell

Но мой CSV-файл всегдапусто и выглядит так:

Ответы [ 3 ]

0 голосов
/ 21 ноября 2019
String id  = vars.get("userID");
FileWriter fstream = new FileWriter("JmeterBean.csv",true);
fstream.write(id+"\n");
fstream.close();

Я сделал это, но получил тот же результат с null в моем CSV-файле:

CSV file

0 голосов
/ 25 ноября 2019
  1. Если JSON Extractor выдает более 1 совпадения, у вас нет переменной userID, у вас будет что-то вроде:

    userID_1=89BC331D723F
    userID_2=FTH7JBDRF567
    userID_matchNr=2
    

    , поэтому я бы порекомендовал двойную проверкукакие переменные JMeter создаются JSON Extractor с использованием комбинации Debug Sampler и View Results Tree listener .

  2. Начиная с JMeter 3.1 для сценариев рекомендуется использовать тестовые элементы JSR223 и язык Groovy

При условии, что все вышеперечисленное добавлено JSR223 PostProcessor (убедитесь, что он расположен после JSON Extractor) и используйте следующий код:

1.upto(vars.get('userID_matchNr') as int, { number ->
    new File('JmeterBean.csv') << vars.get('userID_' + number) << System.getProperty('line.separator')
})
0 голосов
/ 21 ноября 2019

Используйте vars для получения переменной

String id = vars.get("userID");

vars - (JMeterVariables) - дает доступ для чтения / записи к переменным: vars.get(key);

И предпочитаю использовать JSR223 PostProcessor вместо Beanshell PostProcessor

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