JMETER: необходимо отправить все записи в файле CSV в тело HTTP-запроса за один запрос. - PullRequest
0 голосов
/ 07 августа 2020

Я пытаюсь решить проблему с тестовыми данными в Jmeter. Может ли кто-нибудь из вас взглянуть на приведенную ниже формулировку проблемы и дать совет?

Требование: Необходимо отправить все записи в файле CSV в тело запроса HTTP в 'one' запрос к конечной точке.

Пример файла CSV:

"adsfas123wsf00000wqefqwe52145t10000",
"fdfrgvergq120947r0000dwsfqwaef237sadf",
"wfrqwef7865034r78tkahsefjh6985r7asfdaf",
"qefqwe52145t10000adsfas123wsf00000w",
"wsfqwaef237sadffdfrgvergq120947r0000d"

Тело HTTP-запроса : ["$ {data}"}]

После подстановки данных я должен получить следующий результат.

[
"adsfas123wsf00000wqefqwe52145t10000",
"fdfrgvergq120947r0000dwsfqwaef237sadf",
"wfrqwef7865034r78tkahsefjh6985r7asfdaf",
"qefqwe52145t10000adsfas123wsf00000w",
"wsfqwaef237sadffdfrgvergq120947r0000d"
]

Постановка проблемы: Когда я использую конфигурацию набора данных CSV. файла, я не могу объединить все записи в одно тело запроса. Насколько я понимаю, конфигурация набора данных CSV. файл здесь не тот.

Выполнял поиск в StackOverflow и следовал методу, описанному выше, с использованием JSR223 PreProcessor ', и ссылка: Как отправить несколько json body с помощью jmeter? .

Перешел по ссылке выше и попытался добавить ниже предоставленный пользовательский код.

def builder = new StringBuilder()
new File('/path/to/plans.csv').readLines().each { line ->
    builder.append(new File(line).text).append(System.getProperty('line.separator'))
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', builder.toString(), '')
sampler.setPostBodyRaw(true)

После запуска я получаю сообщение об ошибке ниже:

Caused by: java.io.FileNotFoundException,
"adsfas123wsf00000wqefqwe52145t10000",
"fdfrgvergq120947r0000dwsfqwaef237sadf",
"wfrqwef7865034r78tkahsefjh6985r7asfdaf",
"qefqwe52145t10000adsfas123wsf00000w",
"wsfqwaef237sadffdfrgvergq120947r0000d" (The filename, directory name, or volume label syntax is incorrect)

Если файл не найден, тогда почему записи читаются и отображаются в средстве просмотра журнала?

Кроме того, как связать вывод настраиваемого кода с телом запроса? Или об этом позаботился сам пользовательский код?

Ответы [ 2 ]

0 голосов
/ 10 августа 2020

У вас есть ошибка в вашем коде, замените эту строку:

builder.append(new File(line).text).append(System.getProperty('line.separator'))

на эту:

builder.append(line).append(System.getProperty('line.separator'))

Если вы хотите отправить все содержимое файла, который вы не используете Для написания сценариев не требуется go, вы можете использовать __ FileToString () прямо на вкладке «Body data» сэмплера HTTP-запроса:

${__FileToString(/path/to/plans.csv,,)}

enter image description here

And last but not the least if you need to generate JSON из обычного текста было бы лучше go для класса JsonBuilder, см. Apache Groovy - Почему и как вы должны его использовать и Apache Groovy - Разбор и производство JSON

0 голосов
/ 08 августа 2020

Два шага:

  1. Добавить предварительный процессор параметров пользователя перед HTTP-запросом:

Имя: ДАННЫЕ

User_1: $ {__ FileToString (/path/to/plans.csv ,,)}

Добавьте в тело запроса следующее:

$ {DATA}

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