JMeter - чтение изображения из файла данных для запроса PUT - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть данные CSV как

FirstName,MiddleName,LastName,ImageLocation
Jack|Michel|Rechards|C:\Image\picture.jpg
Tom|Peter|Kim|C:\Image\picture123.jpg

Я пытаюсь настроить Jmeter для чтения вышеуказанного файла данных и передачи изображения в виде данных формы в ресурс REST API PUT в качестве данных формы. API принимает изображение как ByteBuffer.

В JMeter загрузка нескольких частей / данных формы доступна только для POST, но не для ресурса PUT.

Для Image я написал код в BeanShell PreProcessor, который помещает byte [] в переменную

String imageLoc = vars.get("ImageLocation");
File file = new File(imageLoc);
byte[] buffer = new byte[(int) file.length()];
InputStream ios = null;
    try {
        ios = new FileInputStream(file);
        if (ios.read(buffer) == -1) {
            throw new IOException(
                    "EOF reached while trying to read the whole file");
        }
    } finally {
        try {
            if (ios != null)
                ios.close();
        } catch (IOException e) {
        }
    }
vars.put("imageData", new String(buffer));

и переменная imageData передается в данных тела HTTP-запроса как

------=_parttest
Content-Type: image/jpeg; name=test.jpeg
Content-Transfer-Encoding: binary
Content-Disposition: form-data; name="Picture"; filename="test.jpeg"
${imageData}
------=_parttest--

Почему-то изображения не отображаются правильно для запросов от Jmeter. Если я сделаю аналогичный PUT-запрос почтальона к API для сохранения изображения и сделаю еще один GET-запрос для чтения изображения, оно будет успешно прочитано.

Либо я неправильно настроил свой тест (проблема с кодом beanShell, либо проблема с данными тела HTTP-запроса), либо есть лучший способ настроить этот тест для чтения изображений из пути в файле данных и передачи изображения в виде данных формы в API PUT ресурс.

С нетерпением жду совета экспертов.

1 Ответ

0 голосов
/ 30 апреля 2018

На самом деле можно выполнить составной запрос PUT с помощью JMeter, вам потребуется:

  1. Добавьте Диспетчер заголовков HTTP и настройте его для отправки заголовка Content-Type со значением:

    multipart/related; boundary=parttest
    
  2. Создайте тело вашего запроса в HTTP-запросе , используя то же граничное значение, что и в заголовке Content-Type

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

Кроме того, я бы предпочел использовать функцию __ FileToString () для чтения содержимого файла изображения или, если вы предпочитаете создавать сценарии, - вместо этого JSR223 PreProcessor и язык Groovy вместо .

...