DAY04_Jsonpath断言、接口关联及加密处理
能够理解如何使用JsonPath应用及断言接口关联的应用;理解什么是对称加密
与非对称加密及其应用。
JsonPath应用及断言 重要
接口关联 重要
对称加密与非对称加密 理解
目录
DAY04_Jsonpath断言、接口关联及加密处理
目录
一. JsonPath应用及断言
1.1 JsonPath应用
1.2 JsonPath简介
1.3 JsonPath安装
1.4 JsonPath的特点
1.5 JsonPath基本格式规范
1.6 JsonPath断言实例
二. 接口关联
2.1 接口关联意义
2.2 接口关联类型
2.3 案例一:加入购物车
三. 对称加密与非对称加密
3.1 加密接口测试执行
3.2 加密项目实例启动
3.3 不可逆算法(MD5)
3.4 对称加密和非对称加密
3.4.1 对称加密
3.4.2 对称加密之AES实例
3.4.2 非对称加密
3.4.4 非对称加密之RSA实例
3.4.5 它们的优缺点
附: Base64编码
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
附: 正则提取
四. 思考课后问题及作业
一. JsonPath应用及断言
自动化要解决的核心问题 :进行自动测试-自动校验(进行结果的校验)
问题一:断言要检查哪些内容?
不同的项目,不同业务定义不同
准则1:一般断言,就是挑选其中的几个核心字段进行检验
准则2:检查核心业务数据,比如订单状态、商品信息、成功信息或者状态
码。
问题二:复杂的断言,一个响应报文有成百上千的字段,如果快速、准确的完成校
验?(海量参数、全报文)
✔
1.1 JsonPath应用
常规的报文也避免不了比较复杂的情况,如下所示包含了一个人员的信息,包括姓
名、年龄、邮箱、地址、爱好、教育背景和参与的项目。它展示了JSON数据的嵌套
结构和多种数据类型的使用,那么我们应该如何进行解决呢?
后面,第八节课会讲。预告接下来,解决问题一。1
{
"name": "Alice",
"age": 25,
"email": "alice@example.com",
"address": {
"street": "456 Elm Street",
"city": "Los Angeles",
"country": "USA"
},
"hobbies": ["reading", "traveling", "cooking"],
"education": [
1
2
3
4
5
6
7
8
9
10
11
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
✔
1.2 JsonPath简介
JsonPath是一种用于在JSON数据中定位和提取特定数据的表达式语言。它类似于
XPath用于XML的定位和提取,可以帮助我们灵活地从复杂的JSON结构中获取所需
的数据。
✔
1.3 JsonPath安装
安装命令:
验证命令:
{
"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"
}
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
pip install jsonpath1
pip show jsonpath1
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
| 注意:
因为对应的库可能在国外的服务器上,所以在下载的时候可能下载比较慢,或者会
提示超时退出,这时候我们可以指定对应的下载路径,也就是下载镜像的地址,常
用的如下:
下载的时候的命令:
✔
1.4 JsonPath的特点
JsonPath可处理的报文类型为字典类型
通过JsonPath成功获得的内容,会以list的形式进行返回,也就意味着你的
JsonPath是可以有一个值或者多个值同时存在的。
如果要基于JsonPath来处理json数据,就一定要去同步处理list
JsonPath定义中,如果表达式出现错误,则会返回False(布尔类型的值)
JsonPath要么返回False,要么返回list
✔
1.5 JsonPath基本格式规范
以下是一些JsonPath的常用语法和示例:
示例参考:
1. 基本语法:
# 阿里云镜像源 http://mirrors.aliyun.com/pypi/simple/
# 清华镜像源 https://mirrors.tuna.tsinghua.edu.cn/help/pypi/
# 豆瓣镜像源 https://pypi.doubanio.com/simple
1
2
3
pip install 包名 -i https://pypi.doubanio.com/simple1
$ 根节点,也是所有JsonPath表达式的开始
. 表示获取子节点
.. 表示获取所有符合条件的内容
* 代表所有的元素节点
[index] 表示迭代器的标示(可以用于处理下标等情况)
[,] 表示多个结果的选择
[start:end] 指定范围内的元素
?(@.property == value) 表示过滤操作 # 比较运算符
@ 表示当前节点
1
2
3
4
5
6
7
8
9
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
$ :根节点,也是所有JsonPath表达式的开始
. :当前节点
.. :递归下级节点
2. 属性操作:
$.property :选择指定属性
$['property'] :选择指定属性,属性名带有特殊字符时使用
3. 数组操作:
$.array[index] :选择指定索引处的元素
$.array[start:end] :选择指定范围内的元素
4. 过滤器:
$.array[?(@.property == value)] :根据条件过滤数组元素
$.array[?(@.property > value)] :根据条件过滤数组元素
5. 路径组合:
$.parent.child :选择父节点下的子节点
$.parent[*].child :选择父节点下所有子节点的某个属性
常用的组合:
参考以上的JSON
附:在线解析 http://www.atoolbox.net/Tool.php?Id=792
| 参考代码
# 获取根目录下的子字段:获取用户名
$.name
# 获取根目录下的字典中的数据:获取地址中的城市("country": "USA")
$.address.country
# 获取根目录下的列表中的某个数据:获取教育经历
$.education[0]
# 获取根目录下的列表中的所有数据中的某个字段:获取教育经历中的年
$.education[0:].year
# 获取根目录下的列表中满足某个条件的数据:获取教育经历中的年等于2020 的数据,== \!=
$.education[?(@.year==2020)]
# 获取所有的数据
$.*
1
2
3
4
5
6
7
8
9
10
11
12
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育
华测教育