使用RequestsLibrary传递错误参数的机器人框架POST请求

时间:2018-02-13 13:02:23

标签: xml http-post httprequest robotframework

上下文

使用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>&lt;ERROR&gt;&lt;CODE&gt;0110&lt;/CODE&gt;&lt;MSGTXT&gt;Encryption 
Failure&lt;/MSGTXT&gt;&lt;/ERROR&gt;</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请求。

2 个答案:

答案 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}