【JMeter】接口断言

发布于:2025-06-10 ⋅ 阅读:(19) ⋅ 点赞:(0)

概览

断言含义:判断结果是否符合预期。

默认断言

默认情况下,预期状态码小于400。
状态码:

  • 1xx:继续请求
  • 2xx:请求成功
  • 3xx:重新请求
  • 4xx:客户端错误(你错了)
  • 5xx:服务端错误(我错了)

示例:
期望:验证输入错误的用户名密码,接口返回失败。
实际:不加断言,输入错误的用户名密码,断言结果却显示成功的。
在这里插入图片描述

普通断言(响应断言)

示例:
期望:验证输入错误的用户名密码,接口返回失败。
实际:添加登录成功的响应断言,输入错误的用户名密码,断言结果显示失败。
在这里插入图片描述

JSON断言

示例:
期望:验证输入错误的用户名密码,接口返回成功。
实际:添加登录失败的JSON断言,输入错误的用户名密码,断言结果显示成功。
在这里插入图片描述

自定义断言

通过代码,完全自由的控制断言条件。
示例:
期望:验证输入错误的用户名密码,接口返回失败。
实际:添加JSR223断言,输入错误的用户名密码,断言结果显示失败。
在这里插入图片描述
(根据需求修改脚本中正则关键字出现次数中的/内容/、判断关键字出现次数中的数量0及断言失败消息即可)
脚本如下:

// JSR223 断言
sampler_code = prev.getResponseCode()	//实际取样代码
sampler_data = prev.getResponseDataAsString()	//实际取样内容

//正则统计关键字出现次数
count_fail = (sampler_data =~ /用户名或密码错误/).size()
count_success = (sampler_data =~ /accessToken/).size()
log.info("fail:${count_fail}	success:${count_success}")

//判断关键字出现次数
if (count_success==0 && count_fail >0){
	log.info('断言失败')
	AssertionResult.setFailure(true)
	prev.setSuccessful(false)	//修改取样器结果
	AssertionResult.setFailureMessage('有fail出现')
}else{
	log.info('断言成功')
	AssertionResult.setFailure(false)
	prev.setSuccessful(true)	//修改取样器结果
}
log.info('自定义断言完成')