Jmeter的元件使用介绍:(八)断言器详解

Jmeter有许多断言器,如:响应断言、Json断言、Beanshell断言、持续时间断言、大小断言、Xpath断言、Html断言。此文主要介绍前面4种断言的使用,其他断言器使用非常少,此处不作多介绍。使用过程中需要注意作用域的问题,(1)如果在测试计划下添加断言器,那该断言器会对整个测试计划下的取样器断言(2)如果在线程组下添加断言器,那么对加了断言器的线程组断言(3)如果在取样器添加断言器,那么只对当前取样器断言。(4)如果作用域下存在多个断言器,断言器会叠加。

下面介绍几种断言器的使用

一:响应断言

该种断言器一般放到具体的取样器下,断言具体的取样器是否包含自己的预期内容。

1:测试字段

(1)响应文本:对响应的文本做断言,此选项不包含响应头信息

(2)响应代码:对响应的状态码断言

(3)响应信息:对响应的全部信息做断言,此选项包含响应所有信息

(4)响应头:对响应头做断言

(5)请求头:对请求头做断言

(6)URL样本:对取样器URL做断言

(7)文档:对响应文档内容断言,至今未使用过

(8)忽略状态:博主也没使用过,应该不怎么使用,默认即可

(9)请求数据:对请求数据做断言

2、模式匹配规则

(1)包括:延段测试字段是否包含指定的文本或者字段值,支持正则表达式

(2)匹配:断言测试字段是否与期望值完全匹配,一般需要结合正则表达式使用

(3)相等:断言测试字段是否与期望值完全相等,此处不支持正则表达式

(4)字符串:断言测试字段是否包含指定的字符串,不支持正则表达式

(5)否:不进行匹配

(6)或者:博主也没使用过,默认即可

3、自定义失败消息

对于断言不通过的时候,可以输出自定义的失败消息

实例:

对百度发起请求,断言响应信息是否包含"百度"字符串,如果包含即断言成功,不包含则断言失败,自定义失败消息"该请求断言不通过噢噢噢"

执行结果:

二:断言持续时间

该断言器一般添加在测试计划或者线程组下,用来断言脚本下所有取样器是否在指定时间内完成了请求和响应

三:Json断言器

该断言器一般添加到指定取样器下。可以使用Json表达式提取指定断言字段进行断言,断言方式支持正则表达式。

例子:对【聚合数据】提供的新闻列表API请求做断言,通过author_name字段是否包含"人民资讯"进行断言。

响应数据格式如下:

断言器设计:

执行结果:由于包含指定字符串,所以断言结果是通过的。

四:Beanshell断言器

博主极力推荐使用该种断言器,功能最为强大,使用简单。

前面介绍过的Beanshell前置处理器语法在这里都可以使用上,要看Beanshell基础语法可以看前面的博客:
Jmeter全方面讲解------Jmeter的元件使用介绍:(四)前置处理器详解 - 筱筱创 - 博客园

Beanshell断言器添加了几个主要的内置对象的使用:

1、Failure:如果Failure=true;则声明断言失败

2、FailureMessage:可以自定义指定断言器的断言输出报告

下面使用Beanshell断言器对【聚合数据】提供的新闻列表API请求做断言。

查看代码

复制代码
String response = prev.getResponseDataAsString();//获取响应信息
String code=prev.getResponseCode();//获取响应的状态码

//断言状态码是否为200且响应信息是否包含字符串"人民资讯",两者都满足才断言通过
if(response.contains("人民资讯")&&"200".equals(code)){
Failure = false;
log.info("新闻头条请求断言通过");
}else{
Failure = true;
FailureMessage="断言失败了哦";

}

执行结果:

相关推荐
文人sec3 天前
性能测试-jmeter9-逻辑控制器、定时器压力并发
测试工具·jmeter·性能优化·模块测试
CesareCheung4 天前
JMeter分布式压力测试
分布式·jmeter·压力测试
测试界清流4 天前
jmeter使用技巧
jmeter
春时似衿里4 天前
jmeter配置数据库连接步骤
数据库·jmeter
新知图书4 天前
JMeter的安装部署
jmeter
程序员杰哥4 天前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例
乐神嘎嘎嘎5 天前
Jmeter测试
jmeter
卓码软件测评5 天前
第三方软件测试机构【性能测试工具用LoadRunner还是JMeter?】
java·功能测试·测试工具·jmeter·性能优化
BatyTao5 天前
Jmeter执行数据库操作
数据库·jmeter
二宝哥5 天前
性能测试工具Jmeter之java.net.BindException: Address already in use
jmeter