Как поместить XML-файл в тело jmeter вместо физического файла - PullRequest
0 голосов
/ 03 июля 2018

Я использую JMeter 3.2. Мое требование - прочитать XML-файл с диска, заменить некоторые теги динамическими значениями, чтобы каждый поток отправлял уникальную загрузку XML-файла (НЕ SOAP-запрос). Следующий код в сэмплере JSR223 прекрасно работает, когда я пытаюсь загрузить новый файл через POST, используя сэмплер http с файлом $ {newfilename} text / xml.

import org.apache.commons.io.FileUtils;

try {

    String content = FileUtils.readFileToString(new File("E:/test.xml"));

        content = content.replaceAll("SUB_ID", "${__UUID}");   
        content = content.replaceAll("ABN_ID", "${empabn}");   
        content = content.replaceAll("EMPNAME", "${empname}");

        vars.put("content", content);
FileUtils.writeStringToFile(new File("E:/testnew${empname}.xml"), content);


} 
catch (Throwable ex) {
log.info("What happened?", ex);
throw ex;
}

Вместо того, чтобы снова записывать на диск и загружать снова, как я могу отправить содержимое строки 'content' как часть тела запроса? Я просмотрел много постов, в которых говорится о входных и выходных потоках, но они сбивают с толку. Когда я пытаюсь отправить только $ {content} в теле, приложение выдает следующую ошибку:

HTTP Status 500 - Could not write JSON: Name is null (through reference chain: com.xxx.xxx.datafile.rest.DataFileResponse["validationStatus"]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Name is null (through reference chain: 

Ценю вашу помощь.

1 Ответ

0 голосов
/ 03 июля 2018

Составные POST-запросы , которые используются для загрузки файлов, отличаются от обычных POST-запросов, поэтому нет возможности просто заменить файл сгенерированной строкой в ​​памяти.

Вам необходимо повторить запрос точно так, как он будет отправлен JMeter или реальным браузером, и вручную заполнить каждую часть, начиная с определения boundary с помощью HTTP Header Manager и заканчивая с созданием Content-Disposition и укажите там содержимое вашего файла.

Небольшая подсказка: вам не нужно генерировать / заменять значения для каждого вызова, достаточно заменить их один раз, и JMeter заменит их самостоятельно, если вы используете __ eval () и __ FileToString () комбинация функций.

JMeter Combine Variables

Вы можете проверить Тестирование загрузки файлов API REST в JMeter для примера создания относительно сложного запроса на загрузку файла, в вашем случае это будет проще, но все же сложно.

...