zoukankan      html  css  js  c++  java
  • 【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}
    

      

  • 相关阅读:
    布局管理
    菜单和工具栏
    Hello World,本章学习Qt的基本功能
    PyQt5中文手册
    qemu-kvm使用
    查看内核日志
    tmux快捷键
    vim插件YouCompleteMe安装
    git submodule删除多余模块
    vim ctags
  • 原文地址:https://www.cnblogs.com/frankzs/p/14391861.html
Copyright © 2011-2022 走看看