将响应值存储在 ROBOT Framework 的变量中

Store the response value in a variable in ROBOT Framework

我从 POST 请求中得到了以下响应,我想将 TOKEN 值存储在一个变量中以备将来使用。

{"AccountName":"tester-01","token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCFtZSI6InN2Yy1kb2NwLXRlc3Rlcjkj5eWSZOSAExHVDL6V9_qgVOJ3pA","re​​freshvalue":"5X6g8QZ3rk1RWQXLdItXlKnfwTPGjQ==","validFrom ":"2021-09-16T05:45:44Z","有效期至":"2021-09-16T06:45:44Z"," refreshValidTo":"2021-09-16T11:45:44Z"}

上述响应的代码片段是

   ${body}=  create dictionary       username=test12345    password=12345

   ${header}=    create dictionary       Content-Type=application/json

  ${login}=  post on session  docp  /login  json=${body}    headers=${header}

   ${value}=      Set Variable    ${login['token']}

当我尝试在值变量中设置响应时,出现以下错误。

Resolving variable '${login['token']}' failed: TypeError: 'Response' object is not subscriptable.

有人可以帮忙吗。

当您发出请求时,returned 数据(在您的例子中是 login 变量)是一个响应 object,而不仅仅是负载。它包含 headers、有效负载、已发送的请求以及许多其他属性; see the library documentation, where it is described in details.

您正在定位回复的 payload/the 内容;当您处理 json api 并期望它是这样时,有一种方便的方法可以 return 您将其解析为 python 字典:

${login}=  post on session  docp  /login  json=${body}    headers=${header}
${payload}=    Set Variable    ${login.json()}    # this will be the data you got from the service, as a plain dictionary 
${value}=      Set Variable    ${payload['token']}