背景:

在接口测试或者 web UI 自动化测试时,常会遇到需要上传文件的场景,此时在 UI 自动化测试过程中大多会采用 AutoIt 及其衍生的库来完成,但是这是一种操作 windows 窗口的方式,适用性不广(无法在没有 GUI 界面的机器上实现),稳定性也差(或许换一个尺寸或分辨率就 gg 了);所以这里建议通过接口上传文件。

目的:

使用 robot framework,通过接口上传文件

摸索:

通过抓包发现,在 web 页面上上传一个文件,其实是对某接口地址 Post 一个请求,如图:

上图中是该请求的头信息

上图中是该 post 请求具体的内容:

实现:

在 RF 中调用如下:

*** Settings ***

Library           RequestsLibrary
Library           Collections
Library           XML
Library           OperatingSystem
Library           ArtisanCustomLibrary

*** Test Cases ***

upload_mapping
    ${data}    Create Dictionary    id=110

    ${cookies}    Create Dictionary    csrftoken=cursaAAPMeNsEnEGg9BhfrSbxtu16nna    sessionid=38bh6069nfwk8283r81h0j2yvwk1knwk

    ${headers}    Create Dictionary    Token=4debb41d64a043d8a887199943095ead    Connection=keep-alive    User-Agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:44.0) Gecko/20100101 Firefox/44.0

    ${response}    post file    http://192.169.100.210/web/version_mapping_file_upload/    ${headers}    ${cookies}    ${data}    /Users/OV/work/Crash-Analysis/test_crash_app/app_sp5_20160222/map.txt
    ...    file    ov_test.txt    text/plain

    log     ${response[0]}

效果:

如上通过自定义一个方法 postFile 并导入 RF 中作为 RF 系统关键字的方式,实现了通过接口上传 txt 文件的目的。


见解不同之处,欢迎指出~

搬运自本人Blog,转载请注明出处,非常感谢。


↙↙↙阅读原文可查看相关链接,并与作者交流