Jmeter接口关联(二)【使用jsonpath表达式提取值】与python中使用jsonpath提取值 完成接口关联

news2024/11/16 9:23:30

文章目录 

  • 前言
  • 一、jmeter中使用jsonpath的表达式来提取值
    • 1、使用jsonpath表达式匹配date的所有数据
    • 2、使用json提取器提取想要拿取的date值
  • 二、在Python中使用Jsonpath来完成接口的关联
    • ​​​​​​​1、jsonpath使用讲解
    •  2、jsonpath在接口关联中使用
  • 总结


前言

Jmeter中关于Jsonpath的使用,来提取值。

前面我们使用了jsonpath中的一种方式来提取值(按照层级方式),这种方式也是最不会出错,但是如果有些层级很深,那么就要使用很长的表达式,才可以提取出来。

那么现在我们用简单一点的方法来提取想要的值。


参考我之前写的有关jsonpath的文章:

jsonpath 语法介绍_撑着海浪游太空的博客-CSDN博客

jsonpath的表达式与json层级的区别,jsonpath里面会使用更多的符号去表示一种功能。这种类似于正则表达式。

使用了聚合数据里面的接口来做接口,已经接口关联。

聚合数据网址:聚合数据-个人中心

选择两个接口:

天气预报接口

老黄历接口

天气预报接口:

请求Key:79a35e2a5997710f3bdc86de81f21dbb

根据城市查询天气

接口地址:http://apis.juhe.cn/simpleWeather/query

请求方式:http get/post

返回类型:json

接口描述:通过城市名称或城市ID查询天气预报情况

接口调试: API测试工具

请求Header:

名称
Content-Typeapplication/x-www-form-urlencoded

请求参数说明:

名称必填类型说明
citystring要查询的城市名称/id,城市名称如:温州、上海、北京,需要utf8 urlencode
keystring在个人中心->我的数据,接口名称上方查看


老黄历接口:

请求Key:949e4265cda71e7be277a3a25e23c576

日历

接口地址:http://v.juhe.cn/laohuangli/d

请求方式:http get/post

返回类型:json/xml

接口描述:日期开始时间为2010-01-01

接口调试: API测试工具

请求Header:

名称
Content-Typeapplication/x-www-form-urlencoded

请求参数说明:

名称必填类型说明
keystring在个人中心->我的数据,接口名称上方查看
datestring日期,格式2014-09-09


一、Jmeter中按照 jsonpath表达式来提取

此例子里面的每个详细的步骤在另一篇文章:

Jmeter接口关联(一)【使用json层级方式提取值】与python中使用层级方式提取值 完成接口关联_撑着海浪游太空的博客-CSDN博客

1、使用jsonpath表达式匹配date的所有数据

2、使用json提取器提取想要拿取的date值

 


 

二、在Python中使用Jsonpath来完成接口的关联

1、jsonpath使用讲解

# 导入jsonpath文件(模块)
import jsonpath

resp_data = {'reason': '查询成功!', 'result': {'city': '上海',
                                   'realtime': {'temperature': '30', 'humidity': '90', 'info': '小雨', 'wid': '07',
                                                'direct': '西北风', 'power': '2级', 'aqi': '52'}, 'future': [
        {'date': '2023-07-10', 'temperature': '27/34℃', 'weather': '小雨转阴', 'wid': {'day': '07', 'night': '02'},
         'direct': '南风'},
        {'date': '2023-07-11', 'temperature': '28/35℃', 'weather': '阴转多云', 'wid': {'day': '02', 'night': '01'},
         'direct': '南风'},
        {'date': '2023-07-12', 'temperature': '27/35℃', 'weather': '多云转阴', 'wid': {'day': '01', 'night': '02'},
         'direct': '南风'},
        {'date': '2023-07-13', 'temperature': '27/35℃', 'weather': '阴', 'wid': {'day': '02', 'night': '02'},
         'direct': '南风'},
        {'date': '2023-07-14', 'temperature': '28/35℃', 'weather': '阴', 'wid': {'day': '02', 'night': '02'},
         'direct': '南风'}]}, 'error_code': 0}

# 使用json的层级来提取想要的值
# b=a["result"]['future'][2]["date"]

# 使用jsonpath表达式来获取想要的值
# jsonpath模块中的jsonpath函数
new_date = jsonpath.jsonpath(resp_data, "$..date")
# 打印出最后一个日期
print(new_date[-1])
C:/Users/Administrator/Desktop/learning_interface_frame/xyz_test/hh.py
2023-07-14

进程已结束,退出代码0

2、jsonpath在接口关联中使用

import requests
import jsonpath
# 天气预报的接口所需要传的参数
url1 = "http://apis.juhe.cn/simpleWeather/query"
key1 = "79a35e2a5997710f3bdc86de81f21dbb"

# 老黄历接口所需要传的参数
url2 = "http://v.juhe.cn/laohuangli/d"
key2 = "949e4265cda71e7be277a3a25e23c576"

# 把两个参数放在data字段中
data1 = {
    "city": "上海",
    "key": key1
}

# 发送接口的请求
req1 = requests.request(method="post", url=url1, data=data1)

# 把json格式的字符转化为字典格式,便于使用字典的提取方式提取值
a = req1.json()
print(a)  # 这个地方是打印出来看下返回的结果


new_time=jsonpath.jsonpath(a,"$..date")

data2 = {
    "key": key2,
    "date": new_time[-1]
}

# 请求老黄历接口
req2 = requests.request(method="post", url=url2, data=data2)
# 打印出返回的数据
print(req2.text)
C:\py\Python\python.exe C:/Users/Administrator/Desktop/learning_interface_frame/ff.py
{'reason': '查询成功!', 'result': {'city': '上海', 'realtime': {'temperature': '27', 'humidity': '96', 'info': '小雨', 'wid': '07', 'direct': '西风', 'power': '2级', 'aqi': '26'}, 'future': [{'date': '2023-07-10', 'temperature': '27/34℃', 'weather': '小雨转阴', 'wid': {'day': '07', 'night': '02'}, 'direct': '南风'}, {'date': '2023-07-11', 'temperature': '28/36℃', 'weather': '阴转多云', 'wid': {'day': '02', 'night': '01'}, 'direct': '南风'}, {'date': '2023-07-12', 'temperature': '27/36℃', 'weather': '多云转阴', 'wid': {'day': '01', 'night': '02'}, 'direct': '南风'}, {'date': '2023-07-13', 'temperature': '28/35℃', 'weather': '阴', 'wid': {'day': '02', 'night': '02'}, 'direct': '南风'}, {'date': '2023-07-14', 'temperature': '28/35℃', 'weather': '阴转小雨', 'wid': {'day': '02', 'night': '07'}, 'direct': '南风'}]}, 'error_code': 0}
{"reason":"successed","result":{"id":"4791","yangli":"2023-07-14","yinli":"癸卯(兔)年五月廿七","wuxing":"剑锋金 满执位","chongsha":"冲兔(丁卯)煞东","baiji":"癸不词讼理弱敌强 酉不宴客醉坐颠狂","jishen":"民日 天巫 月德 福德 除神 不将 续世 鸣犬","yi":"嫁娶 出行 开市 安床 入殓 启钻 安葬","xiongshen":"勾陈 天火 灾煞 血忌 五离","ji":"祈福 动土 破土"},"error_code":0}

进程已结束,退出代码0


 

总结

这篇文章中讲解了jsonpath在Jmeter中运用,和在Python中的运用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/738017.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NFT + JAVA + 可更新合约

前言 合约部署参考:hardhat 合约开发参考:openzeppelin 钱包:metamask 部署链使用的是:sepolia 合约生成Java:solc 合约部署和测试自行处理 1. 合约 合约代码:ZhuZiNFTU.sol // SPDX-License-Iden…

STM32 Proteus UCOSII系统微波炉控制系统DS18B20-0057

STM32 Proteus UCOSII系统微波炉控制系统DS18B20-0057 Proteus仿真小实验: STM32 Proteus UCOSII系统微波炉控制系统DS18B20-0057 功能: 硬件组成:STM32F103R6单片机 LCD1602显示器多个按键蜂鸣器DS18B20温度传感器3个LED灯表示档位加热指…

[SDOI2008] 仪仗队 题解

注:在洛谷同时发布。 题目链接 解题思路 首先观察样例。似乎什么也观察不出来? 那就根据题目描述中所给的图表做。首先找到对角线,将图形沿着对角线一分为二。注意对角线上可以看到一个人,所以答案要加 1 1 1。 其次逐个分析…

-XX:SurvivorRatio

-XX:SurvivorRatio-XXSurvivorRatio eden :from eden :to默认-XXSurvivorRatio8,即 Eden : s0 : s1 8 : 1 : 1,Eden占了年轻代的8/10,不建议修改 case1: -XX:NewRatio4 -XX:SurvivorRatio8 启动参数-Xmx200m -Xms1…

探索Flutter的启动交响曲,详尽指南助力应用启动

Flutter启动流程主要步骤有哪些? 初始化应用程序创建Flutter引擎加载Dart代码构建Widget树创建渲染树更新渲染树呈现界面处理用户输入 Flutter启动需要那些? Dart虚拟机 Dart语言是由Google开发的一种通用编程语言,它可以在不同的平台上运…

基于单片机汽车防盗报警的设计与实现

功能介绍 以STM32单片机作为主控系统;LCD1602液晶显示当前温度信息和参数等功能;3个LED指示灯表示:震动指示灯、人体感应指示灯、防盗模式开启指示灯;按键用来开启防盗模式,设置温度上下限;开启防盗后检测到…

批量识别表格数据——Python调用百度云API

识别效果展示 原始表格 识别处理的表格,可以看到,效果是非常好的 获取KEY 百度智能云 (baidu.com) 产品——文字识别——通用场景 去领取 通用场景OCR——全部——0元领取 去创建 填应用名称——全选——最下面应用描述——立即创建——返回应用列表 …

抖音seo矩阵系统源码|需求文档编译说明(技术)

1.抖音seo矩阵系统文档开发流程 抖音SEO矩阵指的是一系列通过搜索引擎优化(SEO)技术和策略来提升抖音账号在搜索结果中排名的方法和工具。在抖音上,用户可以通过搜索关键词来查找与其相关的视频和账号。因此,抖音SEO矩阵的主要目…

将Notes应用中的PDF附件转为图片

大家好,才是真的好。 好久没有写专门开发方面的知识,主要是因为看的人太少。嗯,当然,这是表面上的,实际上更重要的原因是,写得很麻烦,而且看的人少。 开发要调试,代码要反复测试&a…

Java入门--变量

变量是什么? 变量是用来记住程序要处理的数据的。 变量的定义格式? 数据类型 变量名 数据 注意:这里面的 是赋值的意思,把等号右边的赋值给左边 变量名命名规则: 以字母、下划线、$ 作为首字母由字母、数字、下…

map和set介绍及使用

目录 一、什么是关联式容器 二、set 1.set的介绍 2.set的使用方法 三、mutiset 四、map 1.map简介 2.map的使用 五、multimap 一、什么是关联式容器 在了解map、set之前,你肯定已经使用过vector、list、deque、forward_list(C11)等这些容器,而他…

Jtti:linux如何查看磁盘驱动器列表?

在Linux系统中,你可以使用以下命令之一来查看磁盘驱动器列表: 1.使用 fdisk 命令:运行以下命令来查看磁盘驱动器列表: 这会列出系统中所有的磁盘驱动器及其分区。 2.使用 lsblk 命令:运行以下命令来查看磁盘驱动器列表…

SpringSecurity学习总结

目录 一、简介 二、使用 引入 登录验证流程 完整流程 三、案例(登录验证) 三、设置密码加密和解密方式 三、自定义登录 四、定义JWT认证过滤器 简介 流程 JWT(当前未使用) 定义token过滤 配置过滤器为最前 再次总结流程 五、退出登录 六、一些中间配置 七、网关…

05-流式操作:使用 Flux 和 Mono 构建响应式数据流

1 通过 Flux 对象创建响应式流 基于各种工厂模式的静态创建方法编程的方式动态创建 Flux 相对而言,静态方法在使用上都比较简单,但不如动态方法来得灵活。我们来一起看一下。 2 通过静态方法创建 Flux Reactor 中静态创建 Flux 的方法常见的包括 jus…

机器学习、深度学习、人工智能三者之间究竟是什么关系?

1 什么是人工智能 人工智能(Artificial Intelligence):人工智能是一个广泛的概念,指的是使计算机系统具备像人类一样的智能和能力。人工智能涵盖了包括机器学习和深度学习在内的各种方法和技术,旨在让计算机能够感知、…

IPO观察丨黑芝麻智能递表港交所,车芯行业已迈向量产决战期?

虽然我国汽车芯片行业还处在发展初期,但已经迸发出无限潜力。 一方面,智能汽车的发展不断带动需求增长;另一方面,政策引导下,汽车芯片企业持续抢占高地。对此,在7月5日-7日举办的2023年中国汽车论坛上&…

【数据结构二叉树OJ系列】7、构建二叉树并中序遍历

目录 题述: 思路: 正确代码: 题述: 编写一程序,读入用户输出的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串:ABC##DE#…

C++通过回车结束循环输入

试想一个案例,假设需要你输入n行数字,而每一行输入的数字数量都未知(不定),如何通过C来实现这一操作? 本贴笔者给出一个具体案例:首先规定输入的行数,而后在每一行输入不定量的数字&…

Scratch 足球打蛤蟆

Scratch 足球打蛤蟆 本程序转换为HTML后运行。“足球”角色和角色“麦克斯”跟随鼠标,点击鼠标时“足球”角色复制并向鼠标方向开始移动,碰到边缘反弹,移动一定步数后删除。“蛤蟆”角色每0.5秒在随机位置和方向生成,碰到足球角色…

精彩回顾 | 模型与数据驱动工业数智化——Modelica暨装备数字化研讨会(2023)圆满召开

2023年6月30日,以“模型与数据驱动工业数智化”为主题的Modelica暨装备数字化研讨会(2023)在江苏省苏州市隆重召开。会议由苏州同元软控信息技术有限公司(简称“同元软控”)与哈尔滨工业大学计算学部等单位联合主办&am…