今天我们不讲如何开发自定义校验规则库,而是分享一款在开发自定义校验规则库或者常规接口自动化测试时经常使用的数据提取神器:JsonPath。
1. JsonPath简介
JsonPath是一种简单的方法,用于从给定的JSON文档中提取部分内容。它支持多种编程语言,如JavaScript、Python、PHP、Java等。
JsonPath提供了强大的JSON解析能力,其语法类似于正则表达式,几乎可以满足所有提取JSON内容的需求。
项目地址:https://github.com/json-path/JsonPath
简单概括:JsonPath用于解析和提取Json数据。
2. JsonPath语法
JsonPath语法类似于XPath,用于解析XML文档。Json数据结构通常是匿名的,不需要有根元素。JsonPath使用抽象名称$
表示整个JSON数据的值。
JsonPath的语法包括:
- 使用
.
和[]
符号进行路径表示 - 使用
*
表示通配符,..
表示递归 - 使用
@
表示当前对象 - 使用
?()
进行过滤
3. JsonPath实战使用
安装JsonPath库:
<code>pip install jsonpath</code>
示例数据:
<code>json_datas = { "store": { "book": [ {"category": "测试开发技术", "author": "xx", "title": "关注公众号:测试开发技术", "price": 129}, {"category": "自动化测试", "author": "xx1", "title": "《自动化测试实战宝典》", "price": 109}, {"category": "Python", "author": "xx2", "title": "Python实战教程", "isbn": "0-110-234567-30", "price": 99}, {"category": "Java", "author": "xx3", "title": "小白学Java", "isbn": "0-13095-19295-8", "price": 89} ], "info": {"color": "red", "price": 88} } }</code>
示例用法:
<code>import jsonpath # 查找book下面所有的author authors = jsonpath.jsonpath(json_datas, '$.store.book[*].author') print(authors) # 查找store下面book所有节点数据 books = jsonpath.jsonpath(json_datas, '$.store.book.*') print(books) # 查找book下面第三个book book = jsonpath.jsonpath(json_datas, '$.store.book[2]') print(book) # 查找价格大于100的所有书 expensive_books = jsonpath.jsonpath(json_datas, '$.store.book[?(@.price>100)]') print(expensive_books)</code>
4. JsonPath小技巧
如果对JsonPath表达式不熟悉,可以使用在线解析工具进行测试,例如 JsonPath Online。
在接口自动化测试中,熟练运用JsonPath可以轻松提取所需数据,极大提高测试效率。
© 版权声明
THE END
暂无评论内容