JMeter元件系列(五)---jmeter常用断言详解

news/2025/2/23 16:07:38

常用的断言:

  • 响应断言
  • BeanShell 断言

1、响应断言

  • 作用:断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。

  • 界面如下:
    在这里插入图片描述
    Apply to:

  • Main sample and sub-samples
    范围包括主取样器与所有子取样器。

  • Main sample only
    范围仅限于主取样器。

  • Sub-samples only
    范围仅限于所有子取样器。

  • JMeter Variable Name to use
    范围包括使用的JMeter变量。

    要测试的响应字段:

  • 响应文本:服务器响应文本,一般普通Http响应,就是察看结果树中的响应数据。

  • 响应代码:指的是Reponse code响应代码,对于Http请求,比如:404,200等。但当我们要验证404,501等响应代码时,需要勾选“ignore status”,因为当http响应代码为400,500时,jmeter默认这个请求是失败的。

  • 响应信息:指的是Reponse messsage,对于Http请求,比如OK,Not Found等。

  • 响应头:响应头信息。

  • 请求头:请求头信息。

  • URL样本:请求的URL,对于Http请求,若有重定向,则包含重定向后的URL。

  • 文档(文本):通过Apache Tika各种类型的文档中提取文本。jmeter会用ApacheTika去解析服务器响应内容,会消耗内存,一般不选。

  • 忽略状态:见响应代码。

  • 请求数据:请求数据信息。

    模式匹配规则:

  • 包括:返回结果包括指定的内容,支持正则匹配。

  • 匹配:
    (1) 相当于equals,当返回值固定时,可以返回值做断言,效果与equals相同。
    (2) 正则匹配:用正则表达式匹配返回结果,但必须全部匹配,即正则表达式必须能匹配整个返回值,而不是返回值的一部分。

  • 相等:返回结果与指定断言完全一致。

  • 字符串:与“包括”差不多,都是指返回结果包括你指定的内容,不支持正则。 否:就相当于取反。如果上面断言结果为true,勾选“否”后,最终断言结果为false。如果上面断言结果为false,勾选“否”后,则最终断言结果为true。

  • 否:见字符串。

  • 或者:比如写了两个断言,一个可以成功,一个不会成功,勾选或者之后,请求会成功,不勾选或者,请求会失败。即真假为真。

    注意:
    Contains和Matches模式支持Perl5类型的正则表达式;
    Equals和Substring模式使用文本字符串,不支持正则表达式;
    我还发现断言中的正则不能匹配汉字,汉字是什么就写什么,用[\u4e00-\u9FA5]{2}这样匹配就会报错。

2、BeanShell 断言

  • 作用:BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大。

  • 界面如下:
    在这里插入图片描述

  • 示例:检验返回代码是否是200
    在这里插入图片描述

  • 代码如下:

//create by ybb
String responseData = prev.getResponseDataAsString(); //获取请求的返回结果
String code = prev.getResponseCode(); //获取请求的返回code码
String requestData = prev.getSamplerData(); //获取发出的请求数据
if( !code.equals("200") ){ //如果请求的相应状态码不是200
    FailureMessage = "响应状态码不是:200,而是:" + code + ",请求失败!"; //自定义的失败信息
    log.info(FailureMessage); //在日志里打印失败的信息
    log.info("Request: " + requestData); //在日志里面打印失败的请求体
    Failure = true; //表示断言失败
}
  • 检验返回结果是否包含我自己定义的value值
    在这里插入图片描述

  • 代码如下:

//create by ybb
String value = "要断言的内容";
//获取请求的返回结果
String responseData = prev.getResponseDataAsString();
//判断返回结果是否包含value
  if(responseData.indexOf(value)!= -1){
  	Failure = false;
  	FailureMessage = "包含" + value;
     log.info(FailureMessage);
  	}else{
  	Failure = false;
  	FailureMessage = "不包含" + value;
     log.info(FailureMessage);
  	}

参考博客:https://zhuanlan.zhihu.com/p/72917999
https://www.cnblogs.com/xiehong/p/11475105.html

文章来源:https://blog.csdn.net/qq_36800800/article/details/107756650
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.niftyadmin.cn/n/1025594.html

相关文章

Linux常用命令合集、备忘录、记事本、online记录

总结常用的Linux下的命令,不论简单与否,弄个记事本备忘录啥的,忘记了,也有个在线的文档可以看,我这就简单一个table到底了。 命令含义ntpdate 1.cn.pool.ntp.org校正服务器时间同网络时间一致netstat -tunlp | grep 8…

JMeter元件系列(六)---jmeter常用配置元件详解

常用的配置元件: HTTP信息头管理器HTTP Cookie管理器CSV Data Set ConfigHTTP请求默认值 jmeter版本:5.3 1、HTTP信息头管理器 界面如下: 有的http请求会请求失败或者重定向,需要加上cookie才能请求成功,http信息头…

Unix/Linux fork前传

本文是《Linux fork那些隐藏的开销》的前传。 fork的由来 fork的思想在UNIX出现几年前就出现了,时间大概是1963年,这比UNIX在PDP-7上的第一个版本早了6年。 1963年,计算机科学家Melvin Conway(以Conway’s Law闻名于世)写下一篇论文&#x…

数据库学习(七)---ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序”

连接数据库时,报ORA-12516 “TNS监听程序找不到符合协议堆栈要求的可用处理程序” 1.打开命令窗口:sqlplus /nolog 2.进入数据库:conn sys/123456 as sysdba; 3.show parameter processes; 查看procress&session的参数值和占用值 上…

60行C代码实现一个shell

继 300来行代码带你实现一个能跑的最小Linux文件系统 之后,我们来看看如何60行C代码实现一个shell! 在实现它之前,先看看这样做的意义。 美是有目共睹的。Unix之美,稍微体会,便能得到。 1969年,Unix初始…

JMeter元件系列(七)---jmeter的函数助手带图详解

文章涉及47章节,查看可以通过ctrlF更方便一些,查找需要用的哪个函数助手。 1.BeanShell 作用:运行BeanShell脚本页面展示: 2.changeCase 作用:修改字符串大小写 UPPER:全字符串大写 LOWER:…

C/C++中函数参数传递详解(一)

*在定义时使用代表指针类型,其他情况代表取内容。&在定义时使用代表引用(别名),在其他情况代表取地址 在编写个人函数的时候,你将会受到C中的一条基本的原则的限制:在默认的情况下,变量只能…

JMeter学习(九)---jmeter上传文件及遇到的问题

jmeter上传文件做过好多次,结果今天用的时候又出现问题,总结一下用法和遇到的坑。 jmeter中结构和页面展示如下: http信息头管理器 http请求参数填写如下(红色是必填) http请求文件上传填写如下(红色是…