将响应值存储在 ROBOT Framework 的变量中
Store the response value in a variable in ROBOT Framework
我从 POST 请求中得到了以下响应,我想将 TOKEN 值存储在一个变量中以备将来使用。
{"AccountName":"tester-01","token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCFtZSI6InN2Yy1kb2NwLXRlc3Rlcjkj5eWSZOSAExHVDL6V9_qgVOJ3pA","refreshvalue":"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']}
我从 POST 请求中得到了以下响应,我想将 TOKEN 值存储在一个变量中以备将来使用。
{"AccountName":"tester-01","token":"eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCFtZSI6InN2Yy1kb2NwLXRlc3Rlcjkj5eWSZOSAExHVDL6V9_qgVOJ3pA","refreshvalue":"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']}