前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >pytest+requests+allure实现接口自动化测试系列(5)-jsonpath使用

pytest+requests+allure实现接口自动化测试系列(5)-jsonpath使用

作者头像
搁浅同学
发布2022-07-21 15:00:28
7940
发布2022-07-21 15:00:28
举报

接着上一篇继续分享

目前很多项目接口返回都是json格式的数据,今天主要分享下对json格式的响应数据的操作。我比较常用的一个库就是jsonpath,这个库是专门对json格式的数据进行取值。

一、jsonpath介绍

jsonpath提供了一个方法提取给定json文档的部分内容,它有很多种编程语言,如java、python、javascript,它提供了类似正则表达式的语法,可以让你获取想要的json内容

二、jsonpath语法

一、常用语法

操作

说明

$

表示根元素,表示整个json文档

.

选择子节点

..

选择子孙节点,不考虑层级

[]

选择子节点的索引

[,]

选择多个字端

@

当前选中的节点,和条件过来一起使用

[?(过滤条件)]

条件过来数据

*

通配符

代码语言:javascript
复制
# 示例json数据
{
  'code': 0,
  'data': {
    'googleId': '',
    'gender': '',
    'year': '',
    'city': '',
    'remark': '',
    'view': 'grid',
    'province': '',
    'googleName': '',
    'id': 14578467,
    'wxName': '',
    'email': '',
    'vipEndDate': '',
    'clientId': 'web-c606bc71-bbd3-44d6-93e2-45f1146e9c17',
    'level': 0,
    'encryptPassword': '',
    'facebookId': '',
    'photo': 'photo/DEFAULT-AVATAR-4860fe1e-18d6-4e5f-b424-364f3d4347a2.jpg',
    'updateTime': 1633793230453,
    'wxId': '',
    'passSecure': True,
    'sort': 'time',
    'appleId': '',
    'qqId': '',
    'appleName': '',
    'agreeTermService': False,
    'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzUxMiJ9.eyJhcHAiOiJtdWJ1Iiwic3ViIjoiMTQ1Nzg0NjciLCJsb2dpblR5cGUiOiJtb2JpbGUiLCJleHAiOjE2NDIxNzE5OTIsImlhdCI6MTYzOTU3OTk5Mn0.RPgzFlHlE-8j4jDqxx06oQJpJ8NDUhU6CqzH-0Q7g3tLlRAYiAaM6WsmgrluQV0wJ2-ya-fb2y16PGw8cucBRg',
    'phone': '135281111112',
    'createTime': 1633793230427,
    'name': '幕布用户2327',
    'anonymUserFlag': 0,
    'qqName': '',
    'toutiaoId': '',
    'facebookName': '',
    'larkId': ''
  }

比如我们想取code的值,我们可以通过表达式$.code取值

比如我们取token的值,我们可以通过$..token取到

因为是表示整个json,code是它的子节点,所以就是.code,同样的道理token是它的子孙节点

三、jsonpath库使用

代码语言:javascript
复制
pip install jsonpath

我们通过示例代码取token的值,示例代码,上面是我们接口返回的数据,所以我们代码如下:

代码语言:javascript
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-

from request_handler import request_handler
from jsonpath import jsonpath

data = {
    "phone": "13528872xxxx",
    "password": "Aa12345678",
    "callbackType": 0
}
r = request_handler('post', 'https://api2.mubu.com/v3/api/user/phone_login', data=data)
expression = '$..token'
print(jsonpath(r.json(), expression))

返回的值是一个列表,那个取索引为0就得到token的值

更多的用法可以查看jsonpath的相关文档哦!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 暴走的软件测试Tester 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档