JMeter常用断言方式
简介
接口断言是接口测试中用于验证响应结果是否符合预期的关键机制,根据业务需求编写脚本添加断言,可验证接口的正确性。以下内容仅记录常用的断言方式,多个接口都有断言时可以使用事务控制器来隔离不同的断言。
断言方式
1、响应断言
1.1响应文本断言
文本响应断言是最常用的一种断言类型,它用于检查服务器响应中是否包含特定的文本。例如,我们可以使用文本响应断言来检查登录页面是否包含“checkType”和“rejectReasons”这两个关键字。如果服务器响应中不包含这些关键字,那么断言将失败。
在 JMeter 中,文本响应断言有多种选项,包括:
包含/不包含:检查服务器响应中是否包含/不包含特定的文本。
匹配/不匹配:使用正则表达式来检查服务器响应中是否包含/不包含特定的文本。
1.1.1 断言匹配规则为包括
1.1.2 断言匹配规则为完全匹配
1.2 响应代码断言
响应代码断言用于检查服务器响应的 HTTP 状态码是否符合预期。例如,我们可以使用响应代码断言来检查登录页面是否返回 HTTP 200 状态码。如果服务器返回的状态码不是 200,那么断言将失败。
在 JMeter 中,响应代码断言有多种选项,包括:
等于/不等于:检查服务器响应的 HTTP 状态码是否等于/不等于特定的值。
1.3 JSON断言
JSON 断言是 JMeter 中用于验证 JSON 格式响应的一种断言方式。该断言允许用户指定 JSON 路径表达式并验证 JSON 响应是否符合该表达式
JSON 路径表达式介绍
JMeter 将会对响应进行 JSON 解析,并使用用户输入的 JSON 路径表达式进行验证。表达式由一系列的属性名和数组索引组成:以 “$.” 开头,用“.”和“[]”分隔,遇到数组,使用[下标] 。
1.4 BeanShell断言
BeanShell 是一种完全符合 Java 语法规范的脚本语言。该断言它允许用户在 JMeter 中编写自定义脚本。
1.4.1 响应代码断言
//状态码断言
log.info("状态码:" + ResponseCode);
if(ResponseCode.equals("200")){ Failure=false; // 表示断言成功
}
else{Failure=true; // 表示断言失败FailureMessage="响应状态码非200"; // 自定义的失败信息
}
1.4.2 字符串字段比较
String response = prev.getResponseDataAsString();
if(response != null){log.info("响应体:{}", response.replaceAll("(\"identity\":\")(.*?)(\")", "$1***$3")); // 调试用debug.生产环境用info.右上角感叹号可以查看日志.对响应体的身份证字段脱敏if(response.contains("\"status\":\"pass\"")){ // 响应为JSON格式Failure = false;} else {Failure = true;FailureMessage = "status状态!=pass";}
} else {Failure = true;FailureMessage = "响应数据为空";
}