JMeter - преобразование файла в строку в массив - PullRequest
0 голосов
/ 20 января 2020

Мне нужно сделать следующее:

  1. Считать файл .csv в переменную. CSV-файл содержит одну строку со строкой, подобной (110,111,112,113,114)
  2. Используя эту строковую переменную, разделите содержимое на запятую ",".

Что у меня есть сделано:

  1. Я добавил группу потоков

2a. Добавлена ​​пользовательская переменная «Элемент конфигурации».

2b. Добавлена ​​переменная с именем 'issueIds', имеющая значение $ {__ FileToString (D: \ TestCasesId.csv ,, issueIds)}

3a. Теперь я добавил сэмплер JSR223 со следующим кодом:

String lineItems1 = ${issueIds};
log.info(lineItems1);

3b. Выполнение этого дает следующую ошибку:

Response code:500
Response message:javax.script.ScriptException: In file: inline evaluation of: ``String lineItems1 = 114660,114661,114662,114663; log.info(lineItems1); ;'' Encountered "114661" at line 1, column 28.
 in inline evaluation of: ``String lineItems1 = 114660,114661,114662,114663; log.info(lineItems1); ;'' at line number 1

4a. Добавлен BeanShell Sampler со следующим скриптом:

String lineItems2 = ${issueIds};
String[] lineItems2Arr = lineItems2.split(",");
log.info(lineItems2);
log.info(lineItems2Arr[0]);

4b. Выполнение этого дает следующую ошибку:

Response code:500
Response message:org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval   In file: inline evaluation of: ``String lineItems2 = 114660,114661,114662,114663; String[] lineItems2Arr = lineIt . . . '' Encountered "114661" at line 1, column 28.

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 20 января 2020

В случае, если количество полей, разделенных запятыми, одинаково для всех используемых CSV-файлов, вы можете использовать «CSV Data Set Config» вместо разделения вручную. В этом случае у вас будет отдельная переменная для каждого столбца в CSV, например,

id1,id2,id3,id4,id5
110,111,112,113,114
0 голосов
/ 20 января 2020

Вы делаете 2 неправильные вещи:

  1. Встраивание функций или переменных JMeter в элементы сценариев не рекомендуется, вам следует использовать vars сокращение от JMeterVariables экземпляр класса, например:

    String lineItems1 = vars.get("issueIds");
    
  2. Начиная с JMeter 3.1 рекомендуется использовать элементы тестирования JSR223 и Groovy язык для сценариев , поэтому подумайте о выборе groovy из раскрывающегося списка языков

Groovy имеет гораздо лучшую производительность по сравнению с Beanshell, поддерживает все современные функции Java SDK и обеспечивает некоторый синтаксический сахар поверх него , ознакомьтесь с Apache Groovy - почему и как его использовать статья для более подробной информации.

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