2026/4/16 19:08:29
网站建设
项目流程
桂林北站到机场大巴专线时刻表,wordpress没有上级目录的写权限,军事新闻国际军事新闻,专题型定制网站建设我们在做接口测试时#xff0c;大多数返回的都是json属性#xff0c;我们需要通过接口返回的json提取出来对应的值#xff0c;然后进行做断言或者提取想要的值供下一个接口进行使用。
但是如果返回的json数据嵌套了很多层#xff0c;通过查找需要的词#xff0c;就很不方…我们在做接口测试时大多数返回的都是json属性我们需要通过接口返回的json提取出来对应的值然后进行做断言或者提取想要的值供下一个接口进行使用。但是如果返回的json数据嵌套了很多层通过查找需要的词就很不方便小编今天介绍一种python的第3方库jsonpath。jsonpathjsonpath是使用一种简单的方法来提取给定JSON内容。在我们做接口测试时目前流行的数据格式就是JSON格式的当碰到复杂JSON格式时我们可以使用JsonPath快速提取数据或者更新数据。安装pip install jsonpath。小编先通过正常的接口获取一段json数据供我们进行测试使用import requests# 请求天气的url地址url http://apis.juhe.cn/simpleWeather/query# 请求参数data {city:上海,key:331eab8f3481f37868378fcdc76cb7cd}# 发送post请求r requests.post(url,datadata)j r.json()print(j)通过执行后获取一段我们想要的json数据。{reason:查询成功!,result:{city:上海,realtime:{temperature:23,humidity:25,info:多云,wid:01,direct:西北风,power:2级,aqi:58},future:[{date:2023-03-15,temperature:10/23℃,weather:多云,wid:{day:01,night:01},direct:西南风转东北风},{date:2023-03-16,temperature:9/15℃,weather:多云转小雨,wid:{day:01,night:07},direct:东南风},{date:2023-03-17,temperature:9/13℃,weather:中雨转小雨,wid:{day:08,night:07},direct:东南风转北风},{date:2023-03-18,temperature:8/15℃,weather:多云,wid:{day:01,night:01},direct:北风转东南风},{date:2023-03-19,temperature:12/16℃,weather:晴,wid:{day:00,night:00},direct:东南风}]},error_code:0}通过下标提取json数据有了那么我们先用正常提取json的方法进行提取3-16日的天气信息看看如何提取。可以看到我们想要提取需要找到对应的值然后在继续往下一层一层的查找如果嵌套层数过多容易出错返回信息格式发生改变这里需要修改信息。通过jsonpath提取同样的json数据我们通过jsonpath进行提取data jsonpath.jsonpath(result,$..[?(.date2023-03-16)])print(data)-----------------------------输出结果----------------------------[{date: 2023-03-16, temperature: 9/15℃, weather: 多云转小雨, wid: {day: 01, night: 07}, direct: 东南风}]通过上面的内容会发现我们直接通过过滤器的方式来讲我们的数据取出来了。有点类似我们的正则表达式。jsonpath的其他用法上面介绍的只是jsonpath的一个用法下面小编介绍几种jsonpath的其他用法。通过$获取属性值内容# 直接获取到future的内容data jsonpath.jsonpath(result,$.result.future)data1 jsonpath.jsonpath(result,$.reason)print(data)print(data1)-----------------------------输出结果----------------------[[{date: 2023-03-15, temperature: 10/23℃, weather: 多云, wid: {day: 01, night: 01}, direct: 西南风转东北风}, {date: 2023-03-16, temperature: 9/15℃, weather: 多云转小雨, wid: {day: 01, night: 07}, direct: 东南风}, {date: 2023-03-17, temperature: 9/13℃, weather: 中雨转小雨, wid: {day: 08, night: 07}, direct: 东南风转北风}, {date: 2023-03-18, temperature: 8/15℃, weather: 多云, wid: {day: 01, night: 01}, direct: 北风转东南风}, {date: 2023-03-19, temperature: 12/16℃, weather: 晴, wid: {day: 00, night: 00}, direct: 东南风}]][查询成功!]通过【*】获取对应值通过上面的json值获取到关于date的时间值。data jsonpath.jsonpath(result, $.result.future.[*].date)print(data)-----------------------------输出结果----------------------[2023-03-15, 2023-03-16, 2023-03-17, 2023-03-18, 2023-03-19]通过切片获取对应值data jsonpath.jsonpath(result, $..future[0,1])print(data)-----------------------------输出结果----------------------[{date: 2023-03-15, temperature: 10/23℃, weather: 多云, wid: {day: 01, night: 01}, direct: 西南风转东北风}, {date: 2023-03-16, temperature: 9/15℃, weather: 多云转小雨, wid: {day: 01, night: 07}, direct: 东南风}]以上只是小编简单的介绍几种jsonpath的使用方法具体的使用需要大家通过项目上进行结合使用这里小编在推荐一个jsonpath的调试器我们可以通过调试器进行查看编写是否正确http://www.atoolbox.net/Tool.php?Id792。总结小编通过简单的案例进行介绍了如何通过jsonpath进行提取json数值方面我们在做接口测试对于json的数据进行解析文章中没有太多的知识点主要是熟能生巧经常使用这样在项目中才能灵活运用。感谢您的阅读希望对您有所帮助。感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取