python提取接口返回的字段值

在做接口测试的时候,我们往往需要把某个接口的返回值提取出来作为下一个接口的入参,那么用python代码如何实现呢

一、接口返回的数据类型,通过验证发现接口返回的数据类型为:<class ‘dict’>,即字典类型的数据

dt = {
    "msg": "查询成功",
    "code": 0,
    "data": [
        {
            "issue": "201110025",
            "draw": "155937"
        }
    ],
    "lid": "5B368A0E7A5E4FC98DF9EC83C4B2A663"
}
print(type(dt))  #<class 'dict'>
二、既然知道返回的数据是字典类型的,那是不是可以通过python字典来取值呢,比如要拿到issue的值,首先要知道issue的路径是什么,通过代码来解决
print(dt["data"])  #[{'issue': '201110025', 'draw': '155937'}]

很显然这一步就是通过字典的key值去拿value,只不过在这里,value的值时一个列表,既然是列表,取列表中的元素就得用下标

print(dt["data"][0])  #{'issue': '201110025', 'draw': '155937'}

由于列表只有一个元素,所以下标为0,且列表中包含一个字典,要想取出issue,观察发现就是字典中的第一个key值

print(dt["data"][0]['issue']) #201110025

通过这样一层一层的拿数据,可以拿到想要的key值,在我们通过字典的key值拿value的时候,单引号和双引号都可以

三、通过python提供的jsonpath_rw模块来拿issue的值

通过上面例子,按照json格式的路径发现需要提取的issuye值的路径为:data[0].issue

from jsonpath_rw import parse

dt= {
    "msg": "查询成功",
    "code": 0,
    "data": [
        {
            "issue": "201110025",
            "draw": "155937"
        }
    ],
    "lid": "5B368A0E7A5E4FC98DF9EC83C4B2A663"
}

res = "data[0].issue"
json_exe = parse(res)
print(json_exe)  #data.[0].issue
madle = json_exe.find(dt)
print([math.value for math in madle][0]) #201110025

1、首先需要导入jsonpath_rw模块中的parse
2、把我们需要的key值通过parse转换一下,即json_exe = parse(res)
3、通过转换后的find方法到整个返回的数据中去寻找
4、通过第三步得到的数据其实是一个各个值的路径,然后通过列表生成器取出来
注意:
for math in madle: 通过这个拿到的math是一个对象,该对象中会把要查找的value值单独列出来,同时也会把value值所在的路径一层一层列出来
math.value:当我们通过for循环拿到math的值后,然后通过“.”方式拿value的值,因为是列表生成器,此时拿到的是一个列表:[‘201110025’]。要拿到列表中的值,只需要通过下标就可以,如果存在多个值,就用不同的下标即可

for math in madle:
    print(math)
    #DatumInContext(value='201110025', path=Fields('issue'),
    # context=DatumInContext(value={'issue': '201110025', 'draw': '155937'}, path=<jsonpath_rw.jsonpath.Index object at 0x03B66F40>, 
    # context=DatumInContext(value=[{'issue': '201110025', 'draw': '155937'}], path=Fields('data'), 
    # context=DatumInContext(value={'msg': '查询成功', 'code': 0, 'data': [{'issue': '201110025', 'draw': '155937'}], 'lid': '5B368A0E7A5E4FC98DF9EC83C4B2A663'}, path=This(), 
    # context=None))))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值