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