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

news2024/9/22 17:30:20

文章目录

  • 前言
  • 一、按照 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.coloradmin.cn/o/739857.html

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

相关文章

地方废物回收机构管理系统

方废物回收机构管理系统的开发运用java技术,MIS的总体思想,以及MYSQL等技术的支持下共同完成了该系统的开发,实现了地方废物回收机构的信息化,使用户体验到更优秀的地方废物回收机构管理,管理员管理操作将更加方便&…

奔赴猿田地,开垦一亩三分产

点击上方蓝色字体,选择“设为星标” 回复”云原生“获取基础架构实践 大家好,很久没开荒了,最近一直在想着要不要开始分享最近的一些小技术,看到互联网泡沫化日益严重,程序猿下岗失业,bibi皆是。但不管外界…

Linux如何设置固定IP

首先,Linux的默认网关和DNS解析都是一个地址。 IPV4 IP地址是32位2进制 前缀默认是24但是格式还是得写 DNS解析域名,类似Map,根据域名寻找IP DHCP 如果是自动设置IP,就是由他来自行分配,但是手动的话,就需…

软件测试-基础篇

一、接口的认识 什么是接口 电脑:USB,投影机(数据传输) 软件:API,application program interface.微信提现与充值,支付宝支付,银联支付接口。(鉴权码:token…

港联证券|暑期亲子游和避暑游需求旺盛 数据要素产业价值有望加速释放

上周五,A股再度回调,沪指失守3200点,创业板指、科创50指数跌约1%。截至收盘,沪指跌0.28%报3196.61点,深成指跌0.73%报10888.55点,创业板指跌1.05%报2169.21点,科创50指数跌1.02%;两市…

Vue生态及实践 - Nuxt

Nuxt.js Nuxt.js - Vue.js 通用应用框架 | Nuxt.js 中文网 Nuxt.js 中文教程_w3cschool 开源社区仁人志士创建了开箱可用的:Nuxt.js框架,帮助我们更快的实现ssr的同构。 Nuxt.js是一个基于Vue.js的通用应用框架它是对客户端,服务端基础架…

LeetCode 打卡day59--单调栈

一个人的朝圣 — LeetCode打卡第59-60天 知识总结 Leetcode 739. 每日温度题目说明代码说明 Leetcode 496. 下一个更大元素 I题目说明代码说明 Leetcode 84. 柱状图中最大的矩形题目说明代码说明 知识总结 今天做了单调栈的三道题 总结了一个模版套路: 寻找下一个更大的数 f…

Spring IOC - Bean的扫描

Component及其衍生注解:Configuration、Controller、Service、Repository标记的类,被Spring IOC扫描到后,即可被容器管理起来。其原理基本涵盖在AnnotationConfigApplicationContext构造函数体的三行代码里。 public AnnotationConfigApplic…

学校一键式报警器如何使用

学校一键式报警器通常是在紧急情况下使用的,例如火灾、恶性事件等。以下是一般的使用方法:1. 紧急情况发生时,发现危险或有人身安全受到威胁,迅速找到一键式报警器。2. 按下报警器上的按钮,通常是一个明显的红色按钮。…

查看docker运行状态,与查看防火墙运行状态

安装docker这里不细述了,可以通过 docker -version 查看安装的版本,出现成功就表示安装是ok的 查看docker状态是否启动状态,出现running就表示成功 systemctl status docker 如果没有则需要输入启动命令来启动 systemctl start docker 没报错…

前端学习——Web API (Day2)

Dom事件基础 事件监听 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"width…

干货 | 联通政企数据运营体系建设

以下内容整理自大数据能力提升项目必修课《大数据系统基础》同学们的期末答辩汇报。 我们将从以下几个方面为大家介绍我们的项目&#xff0c;首先第一部分是需求分析&#xff0c;然后是数据提取及处理&#xff0c;接着样本定义与分布、特征粗筛与模型选择、特征精筛与评分卡建模…

Java性能权威指南-总结28

Java性能权威指南-总结28 数据库性能的最佳实践Lambda表达式和匿名类Lambda表达式与匿名类加载 数据库性能的最佳实践 Lambda表达式和匿名类 对很多开发者而言&#xff0c;Java 8最激动人心的特性就是加入了Lambda表达式。不可否认&#xff0c;Lambda对Java开发者的开发效率有…

mac电脑 flv转mp4怎么转

mac电脑 flv转mp4怎么转&#xff1f;相信大家平时在电脑上下载视频的时候遇到过这样一个尴尬的事情&#xff0c;下载下来的视频不能被直接打开播放&#xff0c;而是需要使用专门的播放器才能打开查看&#xff0c;例如flv就是这样一种视频格式。大家都知道视频文件的格式种类非常…

CoT及ReAct解密与实战(三)

第8章 CoT及ReAct解密与实战 8.5 ReAct及计划和执行案例实战 我们来看一下LangChain的官方文档,首先它很简单的说了一下,计划和执行代理(Plan and execute agents)首先计划要做什么,然后执行子任务来实现目标,言外之意ReAct不是这样的,我们在ReAct中看见的内容是,有一步…

Debian使用Tomcat实现国密访问

环境准备&#xff1a; Debian 10 java version "1.8.0_131 Apache Tomcat/9.0.76 360国密浏览器 一.下载并安装jdk8 1.访问网站下载jdk8 https://www.oracle.com/java/technologies/downloads/#java8 2.解压到相应目录 3.配置环境变量 vim ~/.bashrc# java export JAV…

云端地球在建筑设计行业的应用

背景概述 建筑设计行业一直处于技术革新的前沿。随着数字化、信息化、智能化等技术的不断发展&#xff0c;建筑设计也将呈现出新的发展趋势。比如&#xff0c;计算机辅助设计、虚拟现实技术等将成为建筑设计的重要工具。此外&#xff0c;人工智能、大数据、物联网等新技术的应…

leetcode刷题——复制带随机指针的链表

思维导图&#xff1a; 题目描述&#xff1a; 给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点…

WPS Office AI实战:AI带来的文档智能化体验

前面我们已经了解过 AI 在PPT制作、Word写作方面带来的革命性效率提供&#xff0c;今天一起来聊聊在线文档的AI应用。如果你习惯用在线文档的话&#xff0c;一样也可以享受到AI的强大优势。金山在线智能云文档已经接入WPS Office AI套件大家庭&#xff0c;用AI来改造写作的新时…

QT day3作业

有点不对&#xff0c;不能运行了&#xff0c;怪事 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//字体 void Widget::on…