Robotframework 如何在RESTAPI中使用会话令牌

Robotframework 如何在RESTAPI中使用会话令牌,robotframework,Robotframework,im尝试使用此代码,但无效我必须使用第一个关键字获取会话令牌,并在第二个关键字中使用会话令牌,但显示错误消息:AttributeError:'str'对象没有属性'items' Get SessionToken Create Session session https://url verify=True ${resp}= Get Request session uri?appToken=xxxxxx&us

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

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}

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关键字
有非常可靠的用法,只是不适用于像这样的简单/琐碎的构造)


请记住
Get Request
关键字中的
headers
参数需要一个字典,因此请确保最后出现的是这种类型的字典。

这正是您所遇到的错误-由于您为参数指定了字符串值,它失败了,异常为它不是dict。(从技术上讲,它引发了一个异常,字符串对象没有
items()
方法-例如,关键字假定类型并尝试将其用作dict)

请发布错误堆栈。@RussellB AttributeError:“str”对象没有属性“items”
set variable
不会调用关键字,它只将变量设置为您给定的任何静态字符串。您的代码将
${headers}
设置为字符串“Get SessionToken”。通过记录
${headers}
的值,您可以轻松地看到这一点。