使用带有数据和文件的 Balkan 请求库发送 POST 请求(机器人框架)
Sending a POST request using Balkan's requests lib with data and files (Robot Framework)
我正在尝试使用 Balkan 的请求库从用 Robot Framework http://bulkan.github.io/robotframework-requests/#Post 编写的测试用例发送一个请求 (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
错误(来自机器人框架):
20160525 09:47:10.645 : FAIL : ValueError: Data must not be a string.
问题出在关键字 Post 请求上。当我不设置参数文件或数据时,一切都很好,但如果我同时设置两个参数。我看到这些奇怪的错误。
这是库中的错误吗?
根据文档,files
参数是文件 名称 的列表。您正在将实际文件内容传递到关键字中。这或许可以解释为什么您得到 "Data must not be a string"。
我们也遇到过这个异常。 Requests Python 库中似乎出现了异常。
在 line 119 of requests/models.py
、
elif isinstance(data, basestring)
检查 data
是否为字符串。和 robotframework-requests seems to be casting data
into a string almost always. There is an issue 用于关于异常的 robotframework-requests。
我正在尝试使用 Balkan 的请求库从用 Robot Framework http://bulkan.github.io/robotframework-requests/#Post 编写的测试用例发送一个请求 (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
错误(来自机器人框架):
20160525 09:47:10.645 : FAIL : ValueError: Data must not be a string.
问题出在关键字 Post 请求上。当我不设置参数文件或数据时,一切都很好,但如果我同时设置两个参数。我看到这些奇怪的错误。
这是库中的错误吗?
根据文档,files
参数是文件 名称 的列表。您正在将实际文件内容传递到关键字中。这或许可以解释为什么您得到 "Data must not be a string"。
我们也遇到过这个异常。 Requests Python 库中似乎出现了异常。
在 line 119 of requests/models.py
、
elif isinstance(data, basestring)
检查 data
是否为字符串。和 robotframework-requests seems to be casting data
into a string almost always. There is an issue 用于关于异常的 robotframework-requests。