【问题标题】:How to fetch an attribute value from a variable, having the content of a JSON response如何从具有 JSON 响应内容的变量中获取属性值
【发布时间】:2019-02-22 19:35:13
【问题描述】:

我正在使用 Robot Framework API 自动化。在这里,将 JSON 响应存储在变量 [POSTResp.content] 中。即,“POSTResp.content”具有完整的响应,如下所示。请帮我从存储的内容中获取属性的值(例如,referenceId 的值)。

JSON 响应示例:

{
"serviceResponseHeader": {
    "responseContext": {
        "responseCode": "MS19",
        "responseDescription": "Success",
        "serviceResponseTimeInGMT": "18 Sep 2018 16:12:43 GMT"
    },
    "requesterContext": {
        "applicationCode": null,
        "applicationSubCode": null,
        "countryCode": null,
        "requesterReferenceNumber": null,
        "requestTimeInGMT": "30 Jun 2015 11:54:49 GMT",
        "requesterUserIdentity": "23483",
        "requesterGroupIdentity": "1620",
        "requesterIpAddress": "",
        "sessionIdentity": "2536kjhfdashfkhfsab",
        "ssoSessionIdentity": "2536kjhfdashfkhfsab",
        "requesterAbbreviatedGroupName": "NEWCOMP"
    },
    "serviceContext": {
        "serviceVersionNumber": "1.0",
        "serviceCode": "30"
    }
},
"getProxyDetailResponseBody": {
    "proxyDetails": {
        "proxyType": "",
        "proxyValue": "20140005K",
        "referenceId": "PR18090000847597",
        "transactionId": "18091801657466"
    }
}

}

我尝试了以下方法,

1) ${json} 转 JSON ${POSTResp.content} true 登录到控制台\n 代理 ID 是 ${json["proxyValue"]}

结果:解析变量 '${json["proxyValue"]}' 失败:TypeError:字符串索引必须是整数,而不是 str

2) ${json} 评估 json.loads(${POSTResp.content}} json 登录到控制台\n 代理 ID 是 ${json["proxyValue"]}

结果:失败:语法错误:解析时出现意外 EOF(第 1 行)

【问题讨论】:

标签: json robotframework


【解决方案1】:

你的两种方法的问题:

1) library 关键字调用将一个真实的参数(嗯,类似真实的)传递给 pretty_print 参数:

 ${json}    To JSON    ${POSTResp.content}   true

查看库的源代码,在这种情况下,关键字不会返回 dict 对象 - 而是一个字符串,即源 json 的经过优化的版本。这与您收到的错误一致。
删除“true”参数,它必须返回一个字典。

2) 在Evaluate 中用三引号(python 的文字字符串)包围变量:

${json}    Evaluate    json.loads('''${POSTResp.content}'''} 

json

没有它,框架只是转储了变量的值,这引发了 python 语法错误。

顺便说一句,尽量不要使用语言关键字/库名称来创建变量——比如上面的${json}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多