【接口测试_04课_Jsonpath断言、接口关联及加密处理】

一、Jasonpath的应用

JsonPath工具网站:JSONPath解析器 - 一个工具箱 - 好用的在线工具都在这里!

1、JSONPath的手写与获取

手写JSONPath

1、

$   (英文美元符号)代表外层的{}

.   (英文句号)表示当前层级

1)$.  代表获取当前层级下的key

 1.1)默认是最外层

$.name $.address

1.2)再里面一层,就再加一个 英文句号

$.address.city

2)$..代表获取任意层级的所有的这个Key

2.1)两个英文句号,代表任意层级的所有这个key

 $..city 

 2.2)一个key里面有多个value(列表 [ ]),要使用..获取

$..hobbies 

 

2.3)多个value 只取里面的一个值,就按列表的方式通过下标获取即可

2.4) 列表里面套元组,下标获取值

2.5) 列表里面套元组,切片符获取值

 [0:]切片符,认为是从前面写的值0下标,默认到最后一个下标

2.6) 列表里面套元组,[*]代表列表里的所有下标

2.7) 列表里面套元组,表达式获取值

写在列表里面,?() 里面是表达式,@表示当前目录层级   key ==value是表达式的内容

2、通过代码实现获取JSONPath 

1、先安装JSONPath的库

import jsonpath

格式:

jsonpath.jsonpath(data, "$.name")

data 是jsonpath对象

""里面是JSONPath的值

# 注意:
# 1. jsonpath处理的数据必须是字典格式
# 2. 报文的格式是json,必须进行数据的转换。
# 3. json.loads() 将json转换成字典类型因为JSONPath是python的库,所以必须转化成python可以处理的类型

2、写代码

1)简单获取JSONPath
import jsonpathdata = {"name": "Alice","age": 25,"email": "alice@example.com","address": {"street": "456 Elm Street","city": "Los Angeles","country": "USA"},"hobbies": ["reading", "traveling", "cooking"],"education": [{"degree": "Bachelor's","major": "Computer Science","university": "ABC University","year": 2018},{"degree": "Master's","major": "Business Administration","university": "XYZ University","year": 2020}],"projects": [{"name": "Project A","description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.","contributors": ["John", "Sarah", "Mike"],"completed": "true"},{"name": "Project B","description": "Nulla vel sagittis elit. Vivamus auctor massa in lacinia pellentesque.","contributors": ["Alice", "David"],"completed": "false"}],"is_active": "true"
}res1 = jsonpath.jsonpath(data, "$.name")
res2 = jsonpath.jsonpath(data, "$..year")print(res1)  # ['Alice']
print(res2)  # [2018, 2020]

2) JSONPath断言
注意:
程序报错,代码运行结果断言不正确,要思考2方面# 1. 当你觉得你的数据是一致的,那么就尝试打印出来看看--print()函数
# 2. 如果说打印出来还是一样的,考虑一下数据类型---type()函数

 

import jsonpath
import requestsurl = "http://shop-xo.hctestedu.com?s=api/user/login"
public_data = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "hami", "pwd": "123456", "type": "username"}res = requests.request("post", url=url, params=public_data, data=data)sj_res_code = jsonpath.jsonpath(res.json(), "$.code")[0]
print("实际结果sj:", sj_res_code)
print("实际结果类型:", type(sj_res_code))qw_res_code = "0"print("期望结果qw:", qw_res_code)
print("期望结果类型:", type(qw_res_code))
assert sj_res_code == qw_res_code, "结果不一致"

 二、接口关联

什么是接口关联?
上一个接口的响应数据,做为下一个接口的请求数据。关联-- jsonpath (提取响应数据的值)
一个业务(模块)逻辑包含这四个操作,做四件事情:增删改查。
用户登录模块:注册用户(新增),后台-删除用户(删除),修改个人信息(修改),用户列表(查询)
提交订单模块:提交订单(新增),后台-删除订单、用户-删除订单(删除),修改订单信息(修改),订单列表(查询)购物车模块:加入购物车(新增),删除购物车(删除),修改商品规格(修改),购物车列表(查询列表)  --- id--- XX列表

接口测试,一般都有的四个操作:增删改查

核心:
1. 一般接口都会有这个区分(没有经验的小伙伴一定要学会举一反三)
2. 查询一般是可以看对应详情【列表接口(带有一些主要的信息)、某个详情接口】

1、登录获取token

url = "http://shop-xo.hctestedu.com/index.php?s=/api/user/login"
params = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "hami", "pwd": "123456", "type": "username"}# 方法一:
res = requests.post(url=url, params=params, data=data)# ----------------------------------------
# 获取响应数据
result = res.json()
print(f"响应结果是:{result}")# 断言
sj_res = jsonpath.jsonpath(result, "$.msg")[0]
qw_res = "登录成功"
assert sj_res == qw_res, "结果不一致"# 获取token数据
token = jsonpath.jsonpath(result, "$..token")[0]
print('token:',token)

2、使用token,加入购物车

import jsonpath
import requests# 场景一:登录、加入购物车(谁加入购物车--某个人--某个人就涉及鉴权--需要拿到token)
url = "http://shop-xo.hctestedu.com/index.php?s=/api/user/login"
params = {"application": "app", "application_client_type": "weixin"}
data = {"accounts": "hami", "pwd": "123456", "type": "username"}# 登录请求:就下面这1行
res = requests.post(url=url, params=params, data=data)# ----------------------------------------
# 获取响应数据
result = res.json()
print(f"响应结果是:{result}")# 断言
sj_res = jsonpath.jsonpath(result, "$.msg")[0]
qw_res = "登录成功"
assert sj_res == qw_res, "结果不一致"# 获取token数据
token = jsonpath.jsonpath(result, "$..token")[0]
print('token:',token)#  接口一:加入购物车的接口
url = "http://shop-xo.hctestedu.com/index.php?s=/api/cart/save"
params = {"application": "app", "application_client_type": "weixin", "token": token}#token需要写到params里面
data = {"goods_id": "11","spec": [{"type": "尺寸","value": "M"}],"stock": "10"
}# 添加购物车请求(用了登录请求的token):下面这2行
res = requests.post(url=url, params=params, data=data)
print(res.json())

三、加密算法--不一定非要自己写出来,AI即可

 常见加密方式解析网站:AES加密解密

 正常数据传送,如果再路由阶段,被修改请求,把查询余额改为转账,那么就完蛋了

通过HTTPS传输,协议权威,但是不一定绝对有效

 自己加密

 常见加密方式解析网站:AES加密解密

1、对称加密

对称加密:加密和解密方式是一样的。密钥相同(公钥)。两边规则一致

两边都有新华字典,代码是页数第几个字,就是一种密文 

2、非对称加密


非对称加密:密钥不同(公私钥)

非对称加密非为:公钥(用来数据加密的)和私钥(用来解密操作,保持私密)

1)通过cmd打开jar包

打开cmd  默认是C盘,那么我们需要切到D盘直接D:  回车即可

 

然后在D盘打开某个文件夹,就是使用cd 命令。文件路径直接从电脑复制即可

 

cd过后,通过java -jar  包名  命令,启动jar包项目。 启动成功后,不要关闭窗口

 然后,就可以访问接口文档了:http://127.0.0.1:8080/doc.html

 打开文档:

进行调试,说明系统响应正确--非加密

 加密的访问不通

知悉上面的加密规则

生成对应的加密数据--用户名和密码这些传参,都需要进行加密处理才行

 

 

生成的加密数据,再传参:加密网站:AES加密解密

 

解密

输出变输入。格式也互换

 2)通过AI完成加解密算法工具

AI工具:文心一言

通过chatgpt生成 加密和解密的算法代码

老师提供的一些加密的demo

 

实例化的是密钥的对象

enc :加密

dec :解密

 举例

通过AI的代码,修改,对我们登录的用户名和密码进行加密,然后将密文进行请求。生成token

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

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

相关文章

卷积神经网络-奥特曼识别

数据集 四种奥特曼图片_数据集-飞桨AI Studio星河社区 (baidu.com) 中间的隐藏层 已经使用参数的空间 Conv2D卷积层 ReLU激活层 MaxPool2D最大池化层 AdaptiveAvgPool2D自适应的平均池化 Linear全链接层 Dropout放置过拟合,随机丢弃神经元 -----------------…

echarts快速入门

之前只看过,没写过,来了个新需求了解下echarts功能 官网:https://echarts.apache.org/handbook/zh/get-started 官方参数文档:https://echarts.apache.org/zh/option.html#title 其实大部分问题,去官方参数文档里面都…

【项目教程】FFmpeg+SDL2实现视频播放器

一、前言 学习ffmpeg和sdl,并编写一个视频播放器,是一个很好的音视频开发项目。 虽然关于视频播放器的原理已经有很多人在博客中进行了讲解,但是很多人不提供视频和代码,这也是我写这篇博客的主要原因。 二、在视频播放器中&am…

【组合数学 放球问题 虚拟点 小于等于转小于】1621. 大小为 K 的不重叠线段的数目

本文涉及知识点 放球问题 组合数学汇总 本题难道分:2198 LeetCode1621. 大小为 K 的不重叠线段的数目 给你一维空间的 n 个点,其中第 i 个点(编号从 0 到 n-1)位于 x i 处,请你找到 恰好 k 个不重叠 线段且每个线段…

零拷贝(Zero Copy)

目录 零拷贝(Zero Copy) 1.什么是Zero Copy? 2.物理内存和虚拟内存 3.内核空间和用户空间 4.Linux的I/O读写方式 4.1 I/O中断原理 4.2 DMA传输原理 5.传统I/O方式 5.1传统读操作 5.2传统写操作 6.零拷贝 6.1.用户态直接IO 6.2.mmapwrite …

免费使用知网下载文献

第一步:输入网址:https://digi.library.hb.cn:8443/#/(或搜索湖北省图书馆) 第二步:点击登录按钮。 第三步:使用手机 支付宝 扫描页面左侧二维码。 第四步:手机点击“电子读者证注册”。&…

抖音 v27.8.0 内置增强模块,自动播放、无水印下载(可登录,助手增强版)

介绍 抖音应用作为全球领先的短视频平台,其内置功能允许用户将喜欢的内容保存至本地设备,但默认情况下,这些视频会带有抖音的水印。为了解决这一限制,该版本使用户能够直接保存不带水印的视频到手机中,无需使用任何第…

R25 型双极型晶体管 433功率放大器,集电极电流可达100mA

R25 型硅基微波双极型晶体管是一种常见的晶体管,主要用于高频电子放大线路中。常被用作放大器、开关、变频器等电子电路中的核心元件。在放大电路中,它可以将微弱的信号放大到足以驱动输出负载;在开关电路中,它可以实现电路的打开…

易查分小程序 学生成绩管理小程序

亲爱的老师们,是不是每次成绩公布后,家长们的连环夺命call让你头大?担心孩子们的成绩信息安全,又想快速分享给家长,这可咋整?别急,易查分小程序来帮忙啦! 安全有保障 智能验证码&a…

基于tcp实现自定义应用层协议

认识协议 协议(Protocol) 是一种通信规则或标准,用于定义通信双方或多方之间如何交互和传输数据。在计算机网络和通信系统中,协议规定了通信实体之间信息交换的格式、顺序、定时以及有关同步等事宜的约定。简易来说协议就是通信…

【Linux】Linux下centos更换国内yum源

🌱博客主页:青竹雾色间 🌱系列专栏:Linux 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 1. 备份旧的 YUM 源文件2. 下载国内的 YUM 源文件阿里云:网易: 3. 清理 YUM 缓存4. 更新…

scp问题:Permission denied, please try again.

我把scp归纳三种情况: 源端root——》目标端root 源端root——》目标端mysql(任意)用户 源端(任意用户)——》目标端root用户 在scp传输文件的时候需要指导目标端的用户密码,如root用户密码、mysql用户…

选择海外代理IP需要注意什么?

跨境电商近年来的兴起与发展,越来越多的跨境从业者从事该行业,但在从事跨境贸易中则需要海外IP代理来突破地域限制、提升访问速度和稳定性、防止账号关联以及保护隐私和安全。这些功能都有助于跨境电商企业在全球范围内拓展业务,提升竞争力&a…

一文搞定jdk8升级到jdk11

一、背景 为什么要升级JDK11 性能 JDK11的G1的GC性能高很多,对比JDK8无论是性能还是内存占比都有很大的提升,业内各项数据指标也都表明JDK11的G1在应对突发流量的下的效果惊人; 版本兼容 Spring Boot 2.7.x及以后的版本将不再支持Java 8作为…

【IC】partial good

假设单core良率80%,core pass 数量分布呈二项分布。 16个core全pass的概率为: 有n个core pass的概率为: 分布如下: 当np>5且nq>5时,二项分布近似服从正态分布

python fstring教程(f-string教程)(python3.6+格式化字符串方法)

文章目录 Python F-String 教程:深度探究与实用指南引言基础用法什么是F-String?表达式嵌入 格式化选项小数点精度宽度与对齐数字格式化 高级用法复杂表达式调用函数多行F-String嵌套格式化 总结 Python F-String 教程:深度探究与实用指南 引言 在Pyt…

中间件是什么?信创中间件有哪些牌子?哪家好用?

当今社会,中间件的重要性日益凸显,尤其是在信创背景下,选择适合的中间件产品对于推动企业数字化转型和升级具有重要意义。今天我们就来聊聊中间件是什么?信创中间件有哪些牌子?哪家好用?仅供参考哈&#xf…

山东大学软件学院项目实训-创新实训-基于大模型的旅游平台(二十二)- 微服务(2)

目录 4. Ribbon负载均衡 4.1 负载均衡流程 4.2 负载均衡策略 4.3 Ribbon饥饿加载 5. Nacos注册中心 5.1 服务注册到nacos 5.2 nacos服务分级存储模型 5.3 根据权重负载均衡 5.4 环境隔离--namespace 4. Ribbon负载均衡 4.1 负载均衡流程 4.2 负载均衡策略 默认实现是…

cesium绘制区域编辑

npm 安装也是可以的 #默认安装最新的 yarn add cesium#卸载插件 yarn remove cesium#安装指定版本的 yarn add cesium1.96.0#安装指定版本到测试环境 yarn add cesium1.96.0 -D yarn install turf/turf <template><div id"cesiumContainer"></div&…

大学理科生搜题软件?分享四个软件和公众号,来对比看看吧 #笔记#知识分享

在快节奏的大学生活中&#xff0c;合理利用这些日常学习工具&#xff0c;能够让你事半功倍&#xff0c;提高学习效率。 1.福昕翻译 可以一键翻译文档内容&#xff0c;并提供还原排版的译文&#xff0c;对经常看外文文献的朋友来说&#xff0c;绝对是福音 福昕翻译是一流专业…