作为Robot Framework验证的一部分,我将以下数据(存储为${response}
)作为获取请求响应:
{
"interfaces": [
{
"name": "eth0",
"status": "ready",
"macAddress": "xx:xx:xx:xx:xx:xx",
"ipv4": {
"mode": "DHCP",
"address": "127.0.0.1",
"mask": "255.255.255.0",
},
"ipv6": {
"mode": "DISABLED",
"addresses": [],
"gateway": "",
}
}
],
"result": 0
}
我想获取键ipv4
的值并将其与预定义值进行比较。我尝试从HttpLibrary.HTTP
中使用它,因为Robot Framework 3.1不再推荐使用它,因此我想使用Evaluate
。
机器人框架中是否可能?
答案 0 :(得分:6)
如果变量${response}
是一个响应对象-而不是字符串,则有效载荷的内容-最直接的方法是调用其json()
方法,该方法将有效载荷作为已解析的字典返回:
${the data}= Evaluate ${response.json()}
另一种方法是自己通过json.loads()
解析有效负载,并传递存储它的.content
属性(这几乎是.json()
内部执行的操作):
${the data}= Evaluate json.loads(${response.content}) json
如果变量${response}
是一个字符串,即实际有效负载,则只需将其传递给json.loads()
:
${the data}= Evaluate json.loads($response) json
现在您已将数据作为常规词典使用,请按常规方式进行验证:
Should Be Equal ${the data['interfaces'][0]['ipv4']} ${your predefined dictionary}
答案 1 :(得分:0)
这就是您所需要的吗?
jsonObj = {
"interfaces": [
{
"name": "eth0",
"status": "ready",
"macAddress": "xx:xx:xx:xx:xx:xx",
"ipv4": {
"mode": "DHCP",
"address": "127.0.0.1",
"mask": "255.255.255.0",
},
"ipv6": {
"mode": "DISABLED",
"addresses": [],
"gateway": "",
}
}
],
"result": 0
}
ipv6 = jsonObj['interfaces'][0]['ipv6']
print (ipv6)
输出:
{'mode': 'DISABLED', 'addresses': [], 'gateway': ''}
答案 2 :(得分:0)
我不知道Robot Framework,但是如果您想操纵JSON,则可以使用内置的lib json。
Option Base 1
答案 3 :(得分:0)
就我而言,我就是这样工作的:
${response.json()['data'][1]['b1_YDESCRI']}