Сохраните извлеченное значение в csv-файле, используя постпроцессор jsr223 в jmeter - PullRequest
0 голосов
/ 14 апреля 2020

Как сохранить извлеченное значение переменной в текстовом файле csv / с помощью постпроцессора JSR223

Ответы [ 3 ]

0 голосов
/ 14 апреля 2020

1 / Рассмотрим, например, узел в плане тестирования с вашим запросом:

Средство извлечения регулярных выражений и компонент постпроцессора JR223 как дочерний элемент вашего запроса.

2 / Если вы извлеките, например, множественную переменную с именем «blabla», расположив номер совпадения в «-1»

3 / Вот фрагмент кода Groovy, который вы можете использовать в компоненте постпроцессора, чтобы записать свою переменную в файл:

import org.apache.jmeter.*;

File outputFile = new File("MY_FILE.csv")

int max = Integer.parseInt(vars.get("blabla_matchNr"));

for (i=1;i<max;i++)  {

    def word = vars.get("blabla_"+i);
    outputFile << word  << "\r\n"

}
0 голосов
/ 15 апреля 2020

Если это то, что вам действительно необходимо сделать в JSR223 PostProcessor, минимальный код будет:

new File('/path/to/your/file.csv') << vars.get('YOUR_VARIABLE_NAME_HERE') << System.getProperty('line.separator')

Однако, если будет минимальный параллелизм, вы столкнетесь с условие гонки , когда 2 или более потоков (виртуальных пользователей) будут записывать в один и тот же файл, что приведет к повреждению данных


Подход, который я бы порекомендовал, использует:

  1. Объявите переменную, которую вы хотите сохранить через Пример переменных Свойство JMeter, добавив следующую строку в файл user.properties (находится в папке "bin" Ваша установка JMeter):

    sample_variables=YOUR_VARIABLE_NAME_HERE
    
  2. После того, как вы закончите, вы сможете записать значения, используя Flexible File Writer , настроенный как:

    enter image description here

0 голосов
/ 14 апреля 2020

Вам нужно написать код для записи в файл.

Что-то вроде:

import org.apache.commons.io.FilenameUtils;

attr1 = vars.get("attr1");
attr2 = vars.get("attr2"); 

f = new FileOutputStream(locationOfCSVOutputfile, true);

p = new PrintStream(f);


p.println(attr2+","+attr2);

p.close();
f.close();

Точно так же получите нужные значения и запишите их в файл через запятую.

Помните, что в сценарии с несколькими потоками многие потоки будут быть доступ к тому же файлу. поэтому вывод файла может не соответствовать ожидаемому. Чтобы преодолеть это, я использовал контроллер критической секции.

Надеюсь, это поможет.

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