上下文
使用RequestsLibrary自动执行测试,以便将XML Post请求发送到服务器并接收应该验证的响应。
当前测试获取XML文件的“payload”并尝试将其作为Post Request的“data”参数传递。
错误
在Robot Framework上使用RequestsLibrary,POST请求不断导致
<Response [500]>
和
Page can either not be found or displayed. <br />
Please try again or return to login.
在回复体内。
问题
我们正在寻找的响应代码当然是200,但是会不断收到500。因此,响应正文包含
Page can either not be found or displayed. <br />
Please try again or return to login.
而不是必需的XML响应,例如
><MsgType>ERROR</MsgType>
<MsgData><ERROR><CODE>0110</CODE><MSGTXT>Encryption
Failure</MSGTXT></ERROR></MsgData></ProcessMsgResult>
</ProcessMsgResponse></soap:Body></soap:Envelope>
应该是无效请求的响应类型。
守则
Post request XML payload
Disable Warnings
Create Session Gateway https://URLHERE debug=3
${file_data}= Get Binary File ${CURDIR}${/}text.xml
&{headers}= Create Dictionary Content-Type text/xml
${resp}= Post Request Gateway /post data=${file_data} headers=${headers}
Log ${resp.text}
Log ${resp.status_code}
Should Be Equal As Strings ${resp.status_code} 200
这是我使用data
的{{1}}和${file_data}
作为headers
的帖子请求参数运行的代码。 但是,从测试运行报告中,${headers}
未正确传递给Post Request关键字,因为它使用${file_data}
作为数据参数而不是<text/xml>
< /强>
${file_data}
这就是问题所在,而且我不确定为什么数据参数总是INFO : Post Request using : alias=Gateway, uri=/post, data=<text/xml>, headers={u'Content-Type': u'text/xml'}, files=None, allow_redirects=True
。
问题
有没有人在参数没有正确传递之前遇到过这个问题?我认为它应该是data=<text/xml>
,因为服务器会收到500响应一个可理解的XML请求。
答案 0 :(得分:0)
使用相同的关键字时,我也得到了相同的响应代码500。
最适合我的解决方案是-
创建会话iamconnected http://10.204.17.117:8085/ $ {Request_Header}创建字典Content-Type = text / xml;字符集= utf-8 $ {Request_Body}获取文件IF1021VE.xml $ {resp}个发布请求关联的运行器/服务$ {Request_Body}标头= $ {Request_Header}
因此在此代码中,完全限定的URL为-http://10.204.17.117:8085/Runner/services
Runner / services是我已经通过的 params 。
我正在使用预先构建的操作系统库来获取获取文件,以从XML文件获取内容
iamconnected是我的别名。
RequestsHeader是我的标题
注意:当我使用“请求库”页面中提到的“字典”时,我得到的服务器响应代码为500
答案 1 :(得分:-1)
Create Session aliasName url=http://address/sub1/sub2/sub3
${resp}= Post Request alias=aliasName uri=/ data=${file_data} headers=${headers}
Create Session aliasName url=http://address/
${resp}= Post Request alias=aliasName uri=sub1/sub2/sub3 data=${file_data} headers=${headers}