场景:
python在接口自动化测试过程中,取出接口返回Body中的某个字段的值,例如打印接口返回的001号同学的名字:
# 接口返回Body,json格式
"data": [
{
"id": 001,
"sex": "男",
"name": "Jack",
},
{
"id": 002,
"sex": "女",
"name": "Lily",
},
{
"id": 003,
"sex": "男",
"name": "Bob",
}
]
原代码片段
# 样例接口
url = https://edu.com/student/card/?grade_id=6&class_id=1
r = requests.get(url)
response = json.loads(r.text)
sname = response['data']['name']
print(sname)
问题描述
执行时出现以下错误:“TypeError: list indices must be integers or slices, not str”
原因分析:
主要是因为返回值中data以列表的形式返回多组数据,代码中并未指明要取哪组数据的name值
解决方案:
修改后代码片段:
url = https://edu.com/student/card/?grade_id=6&class_id=1
r = requests.get(url)
response = json.loads(r.text)
# 指明取第一组数据,001号同学的名字Jack
sname = response['data'][0]['name']
print(sname)