文章目录
- 一、JMeter断言
-
- [1.1 断言的概念](#1.1 断言的概念)
- [1.2 JMeter中常用断言](#1.2 JMeter中常用断言)
- 二、响应断言
-
- [2.1 场景](#2.1 场景)
- [2.2 操作方法](#2.2 操作方法)
- [2.3 同一个HTTP请求下包含多个响应断言](#2.3 同一个HTTP请求下包含多个响应断言)
- [2.4 参数详解](#2.4 参数详解)
-
- [2.4.1 Apply to:适用范围](#2.4.1 Apply to:适用范围)
- [2.4.2 测试字段:要检查的项](#2.4.2 测试字段:要检查的项)
- [2.4.3 模式匹配规则](#2.4.3 模式匹配规则)
- [2.4.4 测试模式](#2.4.4 测试模式)
- 三、JSON断言
-
- [3.1 场景](#3.1 场景)
- [3.2 操作方法](#3.2 操作方法)
-
- [3.2.1 查看json响应](#3.2.1 查看json响应)
- [3.2.2 添加json断言](#3.2.2 添加json断言)
- [3.3 参数详解](#3.3 参数详解)
- 四、断言持续时间
-
- [4.1 场景](#4.1 场景)
- [4.2 操作方法](#4.2 操作方法)
一、JMeter断言
1.1 断言的概念
- 断言: 让程序判断预期结果和实际结果是否一致。
- 提示: JMeter断言是在请求的返回层面增加一层判断机制; 因为请求成功了, 并不代表结果一定正确, 因此需要检测机制提高测
试准确性。
1.2 JMeter中常用断言
- 响应断言
- JSON断言
- 断言持续时间(Duration Assertion)
二、响应断言
添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 断言 --> 响应断言(断言一定是在HTTP请求的子节点下)
2.1 场景
需求:jmeter 请求:https://www.baidu.com,让程序检查 响应数据中是否包含"百度一下, 你就知道"
2.2 操作方法
1、类型:
- 响应文本:断言 响应体 中包含的字符串。
- 响应代码:断言 响应状态码。
2、注意事项:
- 一个响应文本中,可以放置多个 字符串 关键字。
- 响应状态码,必须放在响应代码中。

2.3 同一个HTTP请求下包含多个响应断言

2.4 参数详解
2.4.1 Apply to:适用范围
- Main sample and sub-samples: 作用于父节点取样器及对应子节点取样器;
- Main sample only: 仅作用于父节点取样器;
- Sub-samples only: 仅作用于子节点取样器;
- JMeter Variable: 作用于jmeter变量(输入框内可输入jmeter的变量名称);
2.4.2 测试字段:要检查的项
- 响应文本: 来自服务器的响应文本, 即主体, 不包括任何HTTP头
- 响应代码: 响应的状态码, 例如: 200
- 响应信息: 响应的信息, 例如: OK
- Response Headers: 响应头部
- Request Headers: 请求头部
- Request Data: 请求数据
- URL样本: 响应的URL
- Document(text): 响应的整个文档
- 忽略状态: 忽略返回的响应状态码
2.4.3 模式匹配规则
- 包括: 文本包含指定的正则表达式
- 匹配: 整个文本匹配指定的正则表达式
- Equals: 整个返回结果的文本等于指定的字符串(区分大小写)
- Substring: 返回结果的文本包含指定字符串(区分大小写)
- 否: 取反
- 或者: 如果存在多个测试模式, 勾选代表逻辑或(只要有一个模式匹配, 则断言就是OK) , 不勾选代表逻辑与(所有都必
- 须匹配, 断言才是OK)
注意: Equals和Substring模式是普通字符串, 而不是正则表达式。
2.4.4 测试模式
即填写你指定的结果(可填写多个),按钮【添加】 、 【删除】 是进行指定内容的管理
三、JSON断言
该组件用来对JSON文档进行验证, 验证步骤如下:
- 首先解析JSON数据, 如果数据不是JSON, 则验证失败。
- 使用Jayway JsonPath 1.2.0中的语法搜索指定的路径。 如果找不到路径, 就会失败。
- 如果在文档中找到JSON路径, 并且要求对期望值进行验证, 那么它将执行验证操作。
添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 断言 --> JSON断言
3.1 场景
需求:让程序检查响应的JSON数据中, city对应的内容是否为"北京"
URL:https://www.weather.com.cn/data/sk/101010100.html
场景:响应数据可以转换为json数据时,首选json断言。否则为其它断言
3.2 操作方法
3.2.1 查看json响应
json
{
"weatherinfo": {
"isRadar": "1",
"rain": "0",
"temp": "18",
"city": "北京",
"WSE": "1",
"qy": "1011",
"njd": "暂无实况",
"cityid": "101010100",
"WD": "东南风",
"SD": "17%",
"Radar": "JC_RADAR_AZ9010_JB",
"time": "17:05",
"WS": "1级"
}
}

3.2.2 添加json断言
JsonPath语法 :https://github.com/json-path/JsonPath
json
$. 代表整个json响应结果
第一种语法: $.一级键名.二级键名.三级键名
$.weatherinfo.city
第二种语法:$...N级键名(N是几级,前面应该有几个点)
$..city
第三种语法:weatherinfo.city

3.3 参数详解
- Assert JSON Path exists: 用于断言的JSON元素的路径
- Additionally assert value: 如果您想要用某个值生成断言, 请选择复选框
- Match as regular expression: 如果需要使用正则表达式, 请选择复选框
- Expected Value: 期望值, 用于断言的值或用于匹配的正则表达式的值
- Expect null: 如果希望为空, 请选择复选框
- Invert assertion (will fail if above conditions met): 反转断言(如果满足以上条件则失败)
四、断言持续时间
断言持续时间:客户端发送请求,到收到服务器的响应时间,要求不超过指定的时间。
添加方式: 测试计划 --> 线程组--> HTTP请求 --> (右键添加) 断言 --> 持续时间断言
4.1 场景
需求:请求: https://www.jd.com ,让程序检查响应时间是否大于500毫秒
4.2 操作方法
