【robotframework】使用RequestLibrary编写通过表单方式提交xlsx文件的测试用例

最近小组成员碰到一个需求,需要使用Robot Framework的RequestLibrary库实现通过表单的方式提交xlsx到接口的测试用例。研究了一下RequestLibrary的相关文档,RequestLibrary是可以支持这样的操作的。

RequestLibrary的官方文档现在建议使用Post On Session来实现POST,文档如下:

 

但是文档中并没有说明上传文件需要指定的参数,继续查阅被废弃的Post Request的文档:

 

 结合stackoverflow上的相关讨论(https://stackoverflow.com/questions/38827417/uploading-files-using-multipart-form-data-through-rest-api),结合几次尝试,最终确定使用两个参数来传递接口需要的参数:

1. files:最终传入一个字典,注意这个字典的key是文件名,value是通过Get Binary File这个关键字返回的文件内容

2. data:传入的也是一个字段,key/value指定接口要求的参数

最终调试完成的测试用例如下:

*** Settings ***
Library    Collections
Library    RequestsLibrary
Library    String
Library    OperatingSystem    

Suite Setup    用户登录    

*** Variables ***
${BASE_URL}    https://YourTestSystemURL

*** Test Cases ***
文件上传测试
    Create Session    sys_test    ${BASE_URL}
    # 构造Cookie参数,带上session ID
    &{headers}=    Create Dictionary    Cookie=${SESSION_ID}
    # 打开文件
    ${file_data}=    Get Binary File    D:/debug/file_upload.xlsx
    # 文件参数
    &{file_parts}=    Create Dictionary
    Set To Dictionary    ${file_parts}    file_upload.xlsx=${file_data}
    # 文件上传参数
    &{post_data}=    Create Dictionary    createdBy=YourUserName    fileName=file_upload.xlsx
    ${resp}=    Post On Session    sys_test    /api/upload_url    files=${file_parts}    headers=${headers}    data=${post_data}
    Log    ${resp.json()}
    

*** Keywords ***
用户登录
     &{headers}=    Create Dictionary   Content-Type=application/json;charset=utf-8 
     Create Session   sys_test   ${BASE_URL}  headers=${headers}
     &{data}=       Create Dictionary    userName=YourUserName    password=YourPassword
     ${resp}        POST On Session       sys_test  /api/signin   json=${data}
     ${cookie_value}    Get From Dictionary     ${resp.headers}     Set-Cookie
     ${session_id}      Fetch From Left            ${cookie_value}    ;   
     Set Suite Variable   ${SESSION_ID}        ${session_id}
     Log    ${SESSION_ID}

  

 

posted on 2021-02-09 09:37  东西南北风  阅读(485)  评论(0编辑  收藏  举报

导航