使用Balkan的请求lib发送POST请求以及数据和文件(Robot Framework)

时间:2016-05-25 08:20:14

标签: robotframework

我正在尝试使用机器人框架http://bulkan.github.io/robotframework-requests/#Post中编写的测试用例中的Balkan请求库发送请求(post),其中包含两个参数作为数据和文件。不幸的是,我总是遇到如下所述的相同错误。

我的测试用例:

X_T_Should Upload File Correctly And Get HTTP 200
    Send Default File To SUT And Return Response

*** Keywords ***
Send Default File To SUT And Return Response
    [Arguments]    ${user_login}=${USER_LOGIN}    ${user_password}=${USER_PASSWORD}
    ${url}=    Get URL
    ${auth}=    Create List    ${user_login}    ${user_password}
    Create Session    rm    ${url}    auth=${auth}
    &{headers}=    Create Dictionary    Content-Type=application/x-www-form-urlencoded
    &{data}=    Create Dictionary    name=file    filename=${DEFAULT_FILE_NAME}
    ${file_data}=    Get Binary File    ${CURDIR}${/}Resources${/}${DEFAULT_FILE_NAME}
    &{files}=    Create Dictionary    file=${file_data}
    ${resp}=    Post Request    rm    ${UPLOAD_URI}    files=${files}    data=${data}    headers=${headers}
    Delete All Sessions

错误(来自Robot Framework):

20160525 09:47:10.645 :  FAIL : ValueError: Data must not be a string.

问题在于关键字Post Request。当我没有设置参数文件或数据,一切都很好,但如果我设置两个args。我看到这些奇怪的错误。

这是库中的错误吗?

2 个答案:

答案 0 :(得分:0)

根据文档,files参数是文件名称的列表。您正在将实际文件内容传递给关键字。这可能解释了为什么你得到"数据不能是字符串"。

答案 1 :(得分:0)

我们也遇到过这个例外。似乎在Requests Python库中引发了异常。 在line 119 of requests/models.py

elif isinstance(data, basestring)

检查data是否为字符串。并且机器人框架 - 请求seems几乎总是将data投射到字符串中。关于异常的机器人框架请求有issue