如何在Rest API中使用会话令牌

时间:2018-12-28 16:07:28

标签: robotframework

im尝试使用此代码,但无法正常工作,我必须使用第一个关键字来获取会话令牌,并在第二个关键字中使用会话令牌,但显示错误消息:AttributeError:'str'对象没有属性'items'< / p>

Get SessionToken
            Create Session    session    https://url    verify=True
            ${resp}=    Get Request    session    uri?appToken=xxxxxx&userId=xxxx&password=xxxx
            Should Be Equal As Strings    ${resp.status_code}    200
            ${json} =  Set Variable  ${resp.json()}
            Dictionary Should Contain Key    ${json}[0]    sessionToken
            ${SessionToken}=    Get From Dictionary    ${json["result"]}    sessionToken
            [Return]    ${SessionToken}

        Check Transaction Detail MCM
            ${headers}=   Set Variable     Get SessionToken
            Create Session    session  https://url   verify=True
            ${resp}=   Get Request    session    /token   URI    headers = ${headers}

1 个答案:

答案 0 :(得分:4)

Set Variable关键字用于为变量分配静态(例如“预定义”)值。用编程语言这一行

${headers}=   Set Variable     Get SessionToken

将等同于:

headers =  "Get SessionToken"

变量${headers}现在将字符串“ Get SessionToken”作为值,而无论关键字是否具有相同的名称(对于框架而言,这只是一个巧合(实际上,框架并不“在乎” “或“知道”这种巧合))。

如果您要存储关键字 Get SessionToken的返回值,只需分配它即可:

${headers}=     Get SessionToken

${headers}现在将具有${SessionToken}内容的值。

使用这种结构,您甚至可以更加明确:

${headers}=     Run Keyword    Get SessionToken

,但这只是不好的风格(Run Keyword具有非常扎实的用法,只是没有像这样的简单/琐碎的构造)。


请记住,headers关键字中的Get Request参数需要一个字典,因此请确保最终使用的是这种类型。
这恰恰是您遇到的错误-由于您已为参数分配了字符串值,因此失败了,但它不是字典。 (从技术上讲,它引发了一个字符串对象不具有items()方法的异常-例如,关键字假定该类型并将其用作dict)