我正在尝试使用机器人框架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。我看到这些奇怪的错误。
这是库中的错误吗?
答案 0 :(得分:0)
根据文档,files
参数是文件名称的列表。您正在将实际文件内容传递给关键字。这可能解释了为什么你得到"数据不能是字符串"。
答案 1 :(得分:0)
我们也遇到过这个例外。似乎在Requests Python库中引发了异常。
在line 119 of requests/models.py
,
elif isinstance(data, basestring)
检查data
是否为字符串。并且机器人框架 - 请求seems几乎总是将data
投射到字符串中。关于异常的机器人框架请求有issue。