Jmeter接口关联(一)【使用json层级方式提取值】与python中使用层级方式提取值 完成接口关联

文章目录

  • 前言
  • 一、按照 json 的路径来提取
    • ​​​​​​​(1)成功匹配到数据的案例(按照层级匹配)
    • (2)失败未匹配到数据的案例(没有按照层级匹配)
    • json提取器
  • 二、使用完整的接口关联,完成两个接口的请求
  • 三、使用Python来完成接口的关联
  • 四、注意点


前言

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

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

选择两个接口:

天气预报接口

老黄历接口


天气预报接口:

请求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


一、按照 json 的路径来提取

使用这种方法就需要按照json格式的层级才会匹配到数据,这种方法就是老老实实的一层一层的匹配,就是绝对路径匹配。

在察看结果树中,先使用测试的方式进行匹配。

步骤:察看结果树

(1)成功匹配到数据的案例(按照层级匹配):

(2)失败未匹配到数据的案例(没有按照层级匹配):

json提取器

步骤:

右键线程组——添加——后置处理器——json提取器

json提取器中的字段解释:

 


二、使用完整的接口关联,完成两个接口的请求

1、请求天气预报的接口,获取到时间

2、在请求老黄历接口中使用天气预报接口里面的时间

步骤:

(1)添加一个http请求,用来请求天气预报接口

 (2)添加一个查看结果树——(目的是用来查看天气预报接口返回的数据)

在这一步中我们需要实际模拟一下json路径的提取

 

(3) 添加一个json 路径提取器——(主要是用来提取天气预报接口的数据)

 (4)添加一个http请求——(主要是发送老黄历接口)

(5)再次添加一个察看结果树——(目的是用来查看老黄历返回的数据)

注意:察看结果树,其实可以只添加一个就行。因为这个东西就是用来察看结果的,会把所有响应的数据都放在这个里面。但是放两个或者多个也不影响。如果放多个在每一个响应的后面,便于观察每一个结果返回的数据。


三、使用Python来完成接口的关联

import requests# 天气预报的接口所需要传的参数
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)  # 这个地方是打印出来看下返回的结果
## 使用字典的方式提取想要的值,这里我是固定提取了第三个值,因为索引是从0开始
new_time = a["result"]['future'][2]["date"]# a={'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}
#
# b=a["result"]['future'][2]["date"]print(new_time)  # 打印出来看看是不是我们想要的那个值# 把上面提取出来的值放在老黄历接口的数据中
data2 = {"key": key2,"date": new_time
}# 请求老黄历接口
req2 = requests.request(method="post", url=url2, data=data2)
# 打印出返回的数据
print(req2.text)
{'reason': '查询成功!', 'result': {'city': '上海', 'realtime': {'temperature': '31', 'humidity': '88', '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}
2023-07-12
{"reason":"successed","result":{"id":"4795","yangli":"2023-07-12","yinli":"癸卯(兔)年五月廿五","wuxing":"路旁土 建执位","chongsha":"冲牛(乙丑)煞西","baiji":"辛不合酱主人不尝 未不服药毒气入肠","jishen":"守日 月恩 圣心","yi":"嫁娶 纳采 出行 祭祀 祈福 解除 移徙 入宅","xiongshen":"小时 月建 土府 元武","ji":"动土 安葬"},"error_code":0}进程已结束,退出代码0

用json层级的方式验证提取的值

首先把第一个天气预报的接口的数据拿出来(注意:先把返回的接口的数据从json格式的字符串转换成字典)

a={'reason': '查询成功!', 'result': {'city': '上海', 'realtime': {'temperature': '31', 'humidity': '88', '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层级(在这里可以理解为字典的层级)方式,来提取值
new_time = a["result"]['future'][2]["date"]# 打印出来看看是否被提取到想要的值
print(new_time)


四、注意点:

在Jmeter中,参数字段填写中,中文字符不不要加上引号,这里会直接变成字符串

 

 

 


总结:

本篇文章里面涉及到:

json提取器的字段解释

Jmeter中使用json层级提取器

Jmeter中接口关联的变量和提取

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

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

相关文章

selenium自动化测试工具

Selenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流界面浏览器,同时也支持phantomJS无界面浏览器。 查看chrome版本,114.05735.199 去 http://chromedriver.storage.googleapis.com/index.html 网…

密码学证明方案寒武纪大爆发——扩容、透明性和隐私的变革潜力

1. 引言 前序博客有: ZKP大爆炸 本文主要参考: StarkWare 2023年6月博客 Cambrian Explosion of Cryptographic Proofs----The transformative potential for scalability, transparency, and privacy2023年3月Eli Ben-Sasson在The 13th BIU Winter …

nginx页面优化与防盗链

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、nginx页面优化1.版本号1.1 查看版本号1.2 修改版本号1.2.1 修改配置文件1.2.2 修改源码文件,重新编译安装 2.nginx的日志分割3.nginx的页面压缩3.1 …

微软亚洲研究院推出AI编译器界“工业重金属四部曲”

编者按:编译器在传统计算科学中一直是一个重要的研究课题。在人工智能技术快速发展和广泛应用的今天,人工智能模型需要部署在多样化的计算机硬件架构上。同时,训练和部署大型人工智能模型时又对硬件性能有着更高的要求,有时还需根…

macOS Ventura 13.5beta5(22G5072a)发布

系统介绍 黑果魏叔 7 月 11 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.5 开发者预览版 Beta 5 更新(内部版本号:22G5072a),本次更新距离上次发布隔了 12 天。 macOS Ventura 带来了台前调度、连续互通相机、Fa…

1g的视频怎么做二维码?较大视频如何生成二维码?

现在很多参与评选活动时,会制作好相关的视频内容,然后生成二维码之后,发送给活动管理人员从而参与评选。在根据要求录制视频时,有些视频会因为时间太长,导致文件过大,那么如何将超过1g的等视频生成二维码&a…

基于DEF生成LIB的方法

基于DEF生成LIB的方法 [生成64位lib] lib /def:libcurl-x64.def /MACHINE:x64 /OUT:libcurl-x64.lib[生成32位lib] lib /def:libcurl-x64.def /OUT:libcurl-x64.lib

OpenCV 图像处理算法和技术的应用实践

OpenCV 图像处理算法和技术的应用实践 导语一、图像滤波算法二、图像分割技术三、特征提取与描述算法四、实践示例:图像风格转换总结 导语 图像处理算法和技术在计算机视觉和图像处理领域发挥着重要作用,通过对图像进行分析、增强和转换,可以…

2023机器人操作系统(ROS)暑期学校预热-线下时间/地点-(转发)

原文地址: https://mp.weixin.qq.com/s/McjBgCpecL6OMgpcrPyY_Q 中国机器人操作系统(ROS)暑期学校自2015年举办以来,被中国机器人业界和学界,以及ROS开源基金会誉为除了ROSCon之外规模最大、参与人数最多、最成功的RO…

什么是Heatmap(热图)图表?用DHTMLX可实现快速构建

DHTMLX Chart是DHTMLX最新发布的JavaScript UI小部件库的核心内容之一,这个图表小部件收到了几个重要的更新,但其中最引人注目的是一个新的数据可视化选项——日历热图。 DHTMLX专注于JavaScript和HTML5 UI小部件和库,以帮助开发人员更快地构…

基于springboot+vue的疫情管理系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

不外传秘诀| docker 快速搭建常用的服务环境

本文主要给大家介绍如何使用 docker 搭建常用的服务环境, 包括mysql,reedis,nginx,jenkins 等常用的环境,下面直接进入主题。 1、MySQL 部署 ①搜索 MySQL 镜像 docker search mysql ②拉取 MySQL 镜像 docker pull mysql:5.7 ③创建容器&#xf…

基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现

功能介绍 以STM32单片机作为主控系统;LCD1602液晶显示屏来显示显示测得的值;SR501人体红外感应是否有人进行防盗;通过烟雾传感器MQ-2获取前的烟雾值;通过DHT11温湿度传感器来获取当前的温湿度;所有的信息通过通过esp82…

php通过IP获取用户当前所在城市

php获取当前用户所在城市 php通过ip免申请api获取所在城市的代码包括省市区sql数据 <?php function getName($pinyin,$lv){$servername "localhost";$username "root";$password "root";$dbname "ttx";try {$conn new PDO(…

机器学习15:神经网络-Neural Networks

神经网络是特征交叉的更复杂版本。本质上&#xff0c;神经网络会学习适当的特征组合。本文主要介绍神经网络的结构、隐藏层、激活函数等内容。 目录 1.神经网络&#xff1a;结构 2.隐藏层 3.激活函数 3.1 常用激活函数 3.2 小结 4.神经网络小练习 4.1 第一个神经网络 …

Jina AI 受邀出席 WAIC 2023「科技无障碍」论坛,与行业专家共话 AI 普惠未来

7 月 6 日&#xff0c;2023 世界人工智能大会&#xff08;WAIC&#xff09;在上海世博中心及世博展览馆开幕&#xff0c;并在浦东张江、徐汇西岸设分会场&#xff0c;同步在闵行等产业集聚区开展同期活动。本届大会由上海市人民政府和国家发改委、工信部、科技部、国家网信办、…

基于JSP+Servlet的医药药品管理系统

用户类型&#xff1a;双角色角色&#xff08;患者、管理员[医生]&#xff09; 设计模式&#xff1a;MVC&#xff08;jspservletjavabean) 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 主要技术&#xff1a;jsp、servlet、jdbc、jsp、html5、jquery、css、js…

RabbitMQ之交换机

RabbitMQ之交换机 1. Exchanges1.1 Exchanges 概念1.2 Exchanges 的类型1.3 无名 exchange 2. 临时队列3. 绑定&#xff08;bindings&#xff09;4. Fanout4.1 Fanout 介绍4.2 Fanout 实战 5. Direct exchange5.1 Direct exchange 介绍5.2 多重绑定5.3 实战 6. Topics6.1 之前类…

亚马逊云科技143项安全标准与合规性认证,帮助企业满足安全合规要求

在亚马逊云科技&#xff0c;为满足客户不断变化的需求&#xff0c;亚马逊云科技持续创新与迭代&#xff0c;设计的服务能帮助客户满足最严格的安全和合规性要求。针对安全相关工作&#xff0c;亚马逊云科技服务团队与Amazon Security Guardians云守护者项目密切配合&#xff0c…

linux终端前面显示base和不显示base

问题描述&#xff1a;前提是系统里装了anaconda3&#xff0c;有时候两个服务器之间相连长时间没使用或者访问时候前面没显示base。。 解决&#xff1a;我们在做深度学习时需要一个环境&#xff0c;如果前面没显示base的话&#xff0c;你直接conda activate是激活不了我们需要跑…