【发布时间】:2018-07-04 13:43:50
【问题描述】:
背景: Robot Framework 的新手,但尝试将 RequestsLibrary 与 OperatingSystem 和 XML 一起使用来自动化 RIDE 上的一些 REST 测试。
要求: 发送带有 XML 正文的文件,并在收到服务器的 XML 响应后进行验证。
问题: 当前设置导致 500 内部服务器错误。
是否可以将 XML 文件的内容而不是 XML 文件本身发送到服务器?
是否可以从服务器返回响应的内容而不是响应码?
已经花了一段时间搜索指针,但没有发现任何对处理 JSON 而不是 XML 的大多数请求和响应有太大帮助的东西。
理想流程:
1)从目录中的文件中提取XML文件内容
2)作为 POST 请求发送到服务器 URL
3)等待响应
4)返回这个 XML 响应并验证它是正确的
代码:
*** Settings ***
Library Collections
Library RequestsLibrary
Library XML
Library Selenium2Library
Library OperatingSystem
*** Test Cases ***
Example 1
Create Session Gateway https://GatewayURL.asmx
${file_data}= Get Binary File ${CURDIR}${/}data.xml
${files}= Create Dictionary ${file_data}
${response}= Post Request Gateway /post files=${files}
我已使用有用的建议添加到代码中。
Post request data in dictionary SAMPLE
Create Session Gateway URL HERE debug=3
${file_data}= Get Binary File ${CURDIR}${/}data.xml
&{data}= Create Dictionary name=${file_data.strip()}
&{headers}= Create Dictionary Content-Type=text/xml
${resp}= Post Request Gateway /post data=${data} headers=${headers}
Should Be Equal As Strings ${resp.status_code} 200
此处使用的 N.B URL 很遗憾无法共享此 URL。
失败如下。不确定为什么数据是 text/xml 当它用于标题时。这导致服务器 500 错误。
Post Request using : alias=Gateway, uri=/post, data=<text/xml>, headers={u'Content-Type': u'text/xml'}, files=None, allow_redirects=True
500 != 200
我想发送 XML 文件的内容而不是 XML 文件本身,因为服务器“不知道如何处理”文件,但能够“处理”XML 文件的实际内容。
在 RF 不接受 Post Request Keyword 的 data 参数之前,您是否遇到过这个问题?出于某种原因,它总是对 Data 使用 Header 参数...
【问题讨论】:
-
您能否edit 您的问题并使用公开可用的 URL 更新示例,以便我们可以复制您的结果?是否还可以添加从系统收到的实际错误消息?
-
尚不清楚您面临的实际问题是什么?抱歉,我不理解问题中的两个要点及其上下文。如果问题是“如何获取服务器的响应并使用它”,请继续阅读答案:)
-
@RangHu 所以看起来答案就是你要找的;我建议请编辑问题 - 删除项目符号(它们令人困惑),将它们替换为“如何获取服务器响应的有效负载,以进行进一步验证?”。
-
感谢您的建议,将更新问题信息。
标签: xml rest request xmlhttprequest robotframework