Загрузите zip-файл с Post запросом, используя роботизированную среду и REST - PullRequest
0 голосов
/ 24 февраля 2020

Нужна помощь с этим. Я пытаюсь загрузить ZIP-файл, выполняющий запрос POST, в REST API. Я использую роботизированную конструкцию вместе с библиотекой запросов. После того, как я увидел пример, я попал в никуда. Вот мой код:

${DATA}= Get Binary File C:\\Users\\${USERNAME}\\data\\Lampadaires.zip 
${DATA}= Get File C:\\Users\\${USERNAME}\\data\\Lampadaires.zip encoding=CP437 
&{dictFiles} Create Dictionary file=${DATA} type=application/x-zip-compressed 
&{headers} Create Dictionary Content-Type=multipart/form-data accept=*/* 
Create Session session http://[test_url]docker.net:8080 headers=${headers}
${resp} Post Request session /rest/v1/organizations/${ORGANIZATION_ID}/upload files=${dictFiles}
Should Be Equal As Strings ${resp.status_code} 200

Я хочу выполнить тот же запрос, что и этот CURL

curl -X POST "http://[test_url]docker.net:8080/rest/v1/organizations/${ORGANIZATION_ID}/upload" -H "accept: */*" -H "Content-Type: multipart/form-data" -F "file=C:\Users\${USERNAME}\data\Lampadaires.zip;type=application/x-zip-compressed"

1 Ответ

0 голосов
/ 02 марта 2020

После некоторого повторного исследования мне удалось найти решение для загрузки zip-файла. Первое: не нужно устанавливать тип содержимого в заголовке, потому что библиотека запросов сделает всю работу за вас. Второе: для загрузки файла вам необходимо создать словарь с определенной конфигурацией c, поскольку наряду с данными вам также необходимо предоставить Content-Disposition: form-data; Name = "файл"; filename = "Lampadaires.zip" Content-Type: application / x-zip-сжатый в моем случае. Поэтому использования ключевого слова Get Binary File недостаточно.

В конце концов, это был мой код

Library    RequestsLibrary       
Library    Collections 
Library    OperatingSystem

***Variables***
${ORGANIZATION_ID}    1234
${ALIAS}    MyAlias
${MCS_URL}    http://test_url:8080
${FILE_UPLOAD_PATH}    C:\\Users\\Daryll\\Documents\\data\\Lampadaires.zip
***Test Cases***
Zip File Upload
   Create Session    ${ALIAS}    ${MCS_URL}
   &{headers}=    Create Dictionary    Accept=*/*
   &{fileParts}=    Create Dictionary
   Create Multi Part    ${fileParts}    file    ${FILE_UPLOAD_PATH}    application/x- 
   zip-compressed

   ${response}=    Post Request    ${ALIAS}    
   /rest/organizations/${ORGANIZATION_ID}/upload    files=${fileParts}    
   headers=${headers}

   Log    ${response.status_code}    console=${True}
   Log    ${response.json()}    console=${True}

*** Keywords ***
Create Multi Part    [Arguments]    ${addTo}    ${partName}     ${filePath}    
    ${contentType}    ${content}=${None}
    ${fileData}=    Run Keyword If    '''${content}''' != '''${None}'''    Set 
    Variable    ${content}
    ...            ELSE    Get Binary File    ${filePath}
    ${fileDir}    ${fileName}=    Split Path    ${filePath}
    ${partData}=    Create List    ${fileName}    ${fileData}    ${contentType}
    Set To Dictionary    ${addTo}    ${partName}=${partData}
...