技术必备:接口自动化测试数据校验神器【JSonPath】

这篇具有很好参考价值的文章主要介绍了技术必备:接口自动化测试数据校验神器【JSonPath】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们今天不讲如何开发一款自定义开发校验规则库,而是给大家分享一款在开发自定义校验规则库或者常规的接口自动化测试时,经常会用到的一款数据提取神器:JSonPath

1. JSonPath介绍

JSonPath是一种简单的方法来提取给定JSON文档的部分内容。 JSonPath有许多编程语言,如JavascriptPythonPHPJava等。

JSonPath提供的json解析非常强大,它提供了类似正则表达式的语法,基本上可以满足所有你想要获得的JSON内容。

项目地址:

https://github.com/json-path/JsonPath

一句话概括:JsonPath就是用来解析提取Json数据用的

2. JSonPath语法

JSONPath 是参照,Xpath表达式来解析XML文档的方式,JSON数据结构通常是匿名的并且不一定需要有根元素。JSONPaht 用一个抽象的名字$来表示最外层对象,即$ 代表整个JSON数据的值。

JSonpath的语法如下:jsonpath.jsonpath()

  • 参数:json对象,jsonpath表达式

  • 返回值:列表

JSONPath 表达式可以使用. 符号如下:

$.store.book[0].title

或者使用[] 符号

$['store']['book'][0]['title']

JSONPath 允许使用通配符 * 表示所以的子元素名和数组索引,还允许使用 '..' 。

表达式在下面的脚本语言中可以使用显示的名称或者索引:

$.store.book[(@.length-1)].title

使用'@'符号表示当前的对象,?(<判断表达式>) 使用逻辑表达式来过滤。

$.store.book[?(@.price > 100)].title

需要额外注意的是

  • []在xpath表达式总是从前面的路径来操作数组,索引是从1开始。
  • 使用JOSNPath的[]操作符操作一个对象或者数组,索引是从0开始。

3. JsonPath实战使用

安装:

pip install jsonpath

例如:待提取的json数据变量名为: json_datas

json_datas = {"store": {
    "book": [
      { "category": "测试开发技术",
        "author": "狂师",
        "title": "关注公众号:测试开发技术",
        "price": 129
      },
      { "category": "自动化测试",
        "author": "狂师1",
        "title": "《自动化测试实战宝典》",
        "price": 109
      },
      { "category": "Python",
        "author": "狂师2",
        "title": "Python实战教程",
        "isbn": "0-110-234567-30",
        "price": 99
      },
      { "category": "Java",
        "author": "狂师3",
        "title": "小白学Java",
        "isbn": "0-13095-19295-8",
        "price": 89
      }
    ],
    "info": {
      "color": "red",
      "price": 88
    }
  }
}

1. 查找book下面所有的author

import jsonpath
datas = jsonpath.jsonpath(json_datas, '$.store.book[*].author')
print(datas)

输出结果为:['狂师', '狂师1', '狂师2', '狂师3']

上述提取表达式,可以改为如下:

datas = jsonpath.jsonpath(json_datas, '$..author')
print(datas)

具备同等效果,输出所有author,结果同样为:['狂师', '狂师1', '狂师2', '狂师3']

2. 查找store下面book所有节点数据

datas = jsonpath.jsonpath(json_datas, '$.store.book.*')
print(datas)

输出结果为:

[{'category': '测试开发技术', 'author': '狂师', 'title': '关注公众号:测试开发技术', 'price': 129}, {'category': '自动化测试', 'author': '狂师1', 'title': '《自动化测试实战宝典》', 'price': 109}, {'category': 'Python', 'author': '狂师2', 'title': 'Python实战教程', 'isbn': '0-110-234567-30', 'price': 99}, {'category': 'Java', 'author': '狂师3', 'title': '小白学Java', 'isbn': '0-13095-19295-8', 'price': 89}]

3. 查找book下面第三个book

datas = jsonpath.jsonpath(json_datas, '$.store.book[2]')
print(datas)

输出结果为:

[{'category': 'Python', 'author': '狂师2', 'title': 'Python实战教程', 'isbn': '0-110-234567-30', 'price': 99}]

4. 查找book下面最后个book,返回的是一个列表

datas = jsonpath.jsonpath(json_datas, '$.store.book[(@.length-1)]')
print(datas)

输出结果:

[{'category': 'Java', 'author': '狂师3', 'title': '小白学Java', 'isbn': '0-13095-19295-8', 'price': 89}]

5.查找 book下面前3本书

datas = jsonpath.jsonpath(json_datas, '$.store.book[0,2]')
print(datas)

输出结果为:

[{'category': '测试开发技术', 'author': '狂师', 'title': '关注公众号:测试开发技术', 'price': 129}, {'category': 'Python', 'author': '狂师2', 'title': 'Python实战教程', 'isbn': '0-110-234567-30', 'price': 99}]

6. 查找所有的包含isbn这个键的所有book

datas = jsonpath.jsonpath(json_datas, '$.store.book[?(@.isbn)]')
print(datas)

输出结果为:

[{'category': 'Python', 'author': '狂师2', 'title': 'Python实战教程', 'isbn': '0-110-234567-30', 'price': 99}, {'category': 'Java', 'author': '狂师3', 'title': '小白学Java', 'isbn': '0-13095-19295-8', 'price': 89}]

7. 查找价格大于100的所有书

datas = jsonpath.jsonpath(json_datas, '$.store.book[?(@.price>100)]')
print(datas)

输出结果:

[{'category': '测试开发技术', 'author': '狂师', 'title': '关注公众号:测试开发技术', 'price': 129}, {'category': '自动化测试', 'author': '狂师1', 'title': '《自动化测试实战宝典》', 'price': 109}]

4. 最后,JsonPath小技巧

最后再给大家推荐一个技巧,如果一开始对JSONPath表达式不太熟悉,可以将需要提取的JSON数据,通过jsonpath在线解析工具测试一下,在线解析JSONPath网址很多,例如:

http://www.e123456.com/aaaphp/online/jsonpath/

在接口自动化测试中,只有你懂得利用好JSONPath,那么至少可以让你在自动化测试数据提取这块,随心所欲的提取自己要想的数据。

好了,今天的干货分享就到这了,你学会了吗?

接口自动化测试【接口自动化实战以及正则和Jsonpath提取器的应用】文章来源地址https://www.toymoban.com/news/detail-705118.html

到了这里,关于技术必备:接口自动化测试数据校验神器【JSonPath】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WEB接口测试之Jmeter接口测试自动化 (三)(数据驱动测试)

    接口测试与数据驱动     数据驱动测试,即是分离测试逻辑与测试数据,通过如excel表格的形式来保存测试数据,用测试脚本读取并执行测试的过程。       我们已经简单介绍了接口测试参数录入及测试执行的过程,因为大量的测试脚本与测试数据内聚在一起,使得我们的

    2024年01月20日
    浏览(46)
  • 从0到1精通自动化,接口自动化测试——数据驱动DDT实战

    DDT简介 名称:Data-Driven Tests,数据驱动测试 作用:由外部数据集合来驱动测试用例的执行 核心的思想:数据和测试代码分离 应用场景:一组外部数据来执行相同的操作 优点:当测试数据发生大量变化的情况下,测试代码可以保持不变 实际项目:excel存储测试数据,ddt读取测

    2024年02月11日
    浏览(35)
  • python接口自动化 之excel读取测试数据

    一、当你拥有一个excel版的接口用例 excel中有用例名称、url、请求方式和请求参数     二、获取excel的Url、请求方式和请求参数   尊重原创,转载请注明出处,谢谢!!

    2024年02月08日
    浏览(45)
  • 【python+Excel】读取和存储测试数据完成接口自动化测试

    http_request2.py用于发起http请求 do_excel2.py完成对excel中用例的读、写、统计 test_case2.xlsx存储测试用例 补充知识:python用unittest+HTMLTestRunner+csv的框架测试并生成测试报告 直接贴代码: csv文件格式: 备注: 使用python处理中文csv文件,并让execl正确显示中文(避免乱码)设施编码格

    2024年04月13日
    浏览(50)
  • 接口自动化测试难点:数据库验证解决方案!

    接口自动化中的数据库验证:确保数据的一致性和准确性  接口自动化测试是现代软件开发中不可或缺的一环,而 数据库验证 则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍 接口自动化中的数据库验证的原理、步骤以及示例代码 ,帮助读者深入了解

    2024年02月07日
    浏览(49)
  • 接口自动化测试难点:数据库验证解决方案

    接口自动化中的数据库验证:确保数据的一致性和准确性 接口自动化测试是现代软件开发中不可或缺的一环,而数据库验证则是确保接口返回数据与数据库中的数据一致性的重要步骤。本文将介绍接口自动化中的数据库验证的原理、步骤以及示例代码,帮助读者深入了解和应

    2024年01月16日
    浏览(47)
  • Android自动化测试,5个必备的测试框架

    Appium是一个开源的移动测试工具,支持iOS和Android,它可以用来测试任何类型的移动应用(原生、网络和混合)。作为一个跨平台的工具,你可以在不同的平台上运行相同的测试。为了实现跨平台的功能,Appium使用了供应商提供的Android UI框架来实施测试:在iOS中使用XCTest,在

    2024年02月09日
    浏览(56)
  • 学会自动化必备工具-Selenium-再想着入坑自动化测试吧

    随着近些年IT行业的发展,软件测试人才的需求越来越大,也有很多小伙伴在考虑入坑,而软件测试中,收入相对较高的就是自动化了,所以这次就专门为大家简单介绍下自动化测试的必备工具Selenium。 Selenium是一款基于Web应用程序的开源测试工具 ,直接运行在浏览器中,支

    2024年01月23日
    浏览(56)
  • Python利用Excel读取和存储测试数据完成接口自动化教程

    http_request2.py用于发起http请求 do_excel2.py完成对excel中用例的读、写、统计 test_case2.xlsx存储​​​​​​测试用例   补充知识: python用unittest+HTMLTestRunner+csv的框架测试并生成测试报告 直接贴代码: csv文件格式: 备注: 使用python处理中文csv文件,并让execl正确显示中文(避免

    2024年01月20日
    浏览(40)
  • Python自动化测试五大框架(测试员收藏夹必备)

    自2018年被评选为编程语言以来,Python在各大排行榜上一直都是名列前茅。目前,它在Tiobe指数中排名第三个,仅次于Java和C。随着该编程语言的广泛使用,基于Python的自动化测试框架也应运而生,且不断发展与丰富。 因此,开发与测试人员在为手头的项目选择测试框架时,需

    2024年02月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包