python返回结果取值字典取值、正则取值、jsonpath解析取值

做接口测试的时候,大部分情况下返回的是json数据,我们需要对返回的json断言。或者取出需要的值,下边介绍取值需要的数据的三种方法,正则和jsonpath可以解决不知道需要取出的值得位置的解决方法(数据值太多情况)

  1. 常规的字典取值
result = {
    "code": 1,
    "data": [
        {
            "age": 16,
            "create_time": "2020-11-11",
            "id": 1,
            "mail": "1172379@163.com",
            "name": "guiyin",
            "sex": "L"
        },
        {
            "age": 18,
            "create_time": "2020-11-11",
            "id": 2,
            "mail": "123445@163.com",
            "name": "guiyin222",
            "sex": "XXL"
        }
    ],
    "msg": "success!"
}


# 字典取值断言
assert result["code"] == 1
assert result["msg"] == "success!"
assert result["data"][0]["name"] == "guiyin"
  1. 正则取值
    比如我想判断返回的结果里面有没有 “name”: “guiyin” 并且你不知道它是 data 列表中的第几个,这种情况断言就写的很复杂了。
    可以用万能的正则取值,正则只能是针对字符串取值,dict 对象先转 json 字符串。
  2. jsonpath解析取值
    jsonpath常用语法
    在这里插入图片描述
import re
import json

import jsonpath as jsonpath

result = {
    "code": 1,
    "data": [
        {
            "age": 16,
            "create_time": "2020-11-11",
            "id": 1,
            "mail": "1172379@163.com",
            "name": "guiyin",
            "sex": "L"
        },
        {
            "age": 18,
            "create_time": "2020-11-11",
            "id": 2,
            "mail": "123445@163.com",
            "name": "guiyin222",
            "sex": "XXL"
        }
    ],
    "msg": "success!"
}

# 断言data中包含"name": "guiyin"
result_to_json = json.dumps(result)
print(result_to_json)       # 先转json
# 方法1 正则取值
res = re.findall('"name": "(.+?)"', result_to_json)  # 正则从json中取值
print(res)
assert "guiyin" in res

# 方法2 直接判断包含
assert '"name": "guiyin"' in result_to_json


#jsonpath用法
msg = jsonpath.jsonpath(result, '$.msg')
print(msg)   # 输出结果 ['success!']
names = jsonpath.jsonpath(result, '$..name')
print(names)   # 输出结果 ['guiyin', 'guiyin222']
no = jsonpath.jsonpath(result, '$..guiyin')
print(no)   # 找不到是结果是 False

在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值