Как получить загруженный файл xlsx с конечной точки API в каратэ? - PullRequest
0 голосов
/ 29 января 2019

У меня есть конечная точка, которая загружает файл xlsx.В моем тесте мне нужно проверить содержимое файла (не сравнивать файл с другим файлом, а читать содержимое и проверять).Я использую фреймворк каратэ для тестирования и пытаюсь использовать apache POI для работы с таблицей Excel.Тем не менее, ответ, который я получаю от каратэ при вызове конечной точки загрузки, является строкой.Для создания файла Excel с POI мне нужен InputStream или путь к реальному файлу.Я пробовал преобразование, но оно не работает.

Полагаю, мне здесь не хватает связи, или, может быть, конверсия плохая, я новичок в каратэ и во всем этом.Я ценю любую помощь, спасибо!

 Given url baseUrl
    Given path downloadURI
     When method GET
     Then status 200
    And match header Content-disposition contains 'attachment'
    And match header Content-disposition contains 'example.xlsx'
    And match header Content-Type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

        * def value= FileChecker.createExcelFile(response)
        * print value

И код Java:

public static String createExcelFile(String excel) throws IOException, InvalidFormatException {
        InputStream stream = IOUtils.toInputStream(excel, Charset.forName("UTF-8"));
        Workbook workbook = WorkbookFactory.create(stream);
        return ("Workbook has " + workbook.getNumberOfSheets() + " Sheets : ");
    }

При запуске сценария я получаю следующую ошибку: javascript evaluation failed: FileChecker.createExcelFile(response), java.io.IOException: Failed to read zip entry source

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

Ответы [ 2 ]

0 голосов
/ 12 июля 2019

Для загрузки zip-файла из тестов каратэ в виде двоичного массива прикуса

Сценарий: проверка и получение URI ADCI из развертывания. Заданный URL-адрес basicURL + DeployUri + ArtifactUri и заголовки {authorization:'#(authToken)',accept:'application/json',tenant:'#(tenantUUId)',Content-Type:'application/zip'} Когда метод получает Тогда статус 200 Иdef responsebytes = responseBytes

0 голосов
/ 29 января 2019

В карате 0.9.X и далее у вас есть переменная responseBytes, которая будет необработанным байтом, который может быть тем, что вам нужно.

* def value= FileChecker.createExcelFile(responseBytes)

И вы можете изменить сигнатуру вашего метода на:

public static String createExcelFile(byte[] excel) {}

Вы сможете легко преобразовать байтовый массив в InputStream и взять его оттуда.

PS Просто сказать, что это «работает в Почтальоне», бесполезно: P

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