Jmeter常用断言之BeanShell断言详解

这篇具有很好参考价值的文章主要介绍了Jmeter常用断言之BeanShell断言详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本
在这里除了可以使用beanshell的内置变量外,主要通过 Failure 和 FailureMessage来设置断言结果。

Failure = false;-----表示断言成功
FailureMessage = “......";---自定义的成功信息
Failure = true;----表示断言失败
FailureMessage="......";------自定义的失败信息

一、添加断言方式

根据需要可在【测试计划】、【线程组】、【线程请求】下添加断言,一般在对应的【线程请求】下添加,如下图所示,即本文所介绍的。
添加路径:【线程请求-点击右键-添加-断言-最后一个BeanShell断言】
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具

二、BeanShell断言

响应断言界面设置,如下图:
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具

2.1.BeanShell断言界面详解

名称】BeanShell断言组件的自定义名称,见名知意最好。
注释】即添加一些备注信息,对该BeanShell断言组件的简短说明,以便后期回顾时查看。
Reset bsh.Interpreter before each call】每个BeanShell测试元素都有自己的解释器副本(对于每个线程)。
如果重复调用测试元素,例如:在循环内,除非选择在每次调用之前重置bsh.Interpreter选项,否则解释器将保留在调用之间。一些长时间运行的测试可能会导致解释器使用大量内存。
由于BeanShell的bsh.Interpreter存在内存泄露,常规方法无法支持长时间的压力测试
JMeter官网推荐,在使用BeanShell进行长时间测试时,**打开选项【每次调用前置 bsh.Interpreter】=【Reset bsh.Interpreter before each call】,则在每次调用BeanShell程序前,都把解释器重置,以释放解释器之前占用的内存。
参数 (-> String Parameters和String[]bsh.args)】输入String参数。String[]bsh.args是主类main函数的形式参数,是一个String 对象数组,可以用来获取命令行用户输入进去的参数。
脚本文件】脚本文件(可以填入脚本文件路径),可以点击后边的浏览选择脚本文件。
脚本】:编写脚本,参照下文定义的变量(使脚本文件参照定义的变量来运行)

2.2.断言源码

状态码断言-源码信息,如下:

//状态码断言
log.info("状态码:" + ResponseCode);
if(ResponseCode.equals("200")){ 
	Failure=false;	// 表示断言成功
}
else{
	Failure=true;	// 表示断言失败
	FailureMessage="响应状态码非200";  // 自定义的失败信息
}

注:字符串只能使用双引号,字符串相等要使用" “.equals(” ")表达式。

响应数据断言-源码信息,如下:

//获取响应数据
String response = prev.getResponseDataAsString();
log.info("响应体:" + response);
//响应数据包含
if(response.contains("token")){
	Failure=false;	// 表示断言成功
}
else{
	Failure=true;	// 表示断言失败
	FailureMessage="响应数据不包含token";
}

三、断言结果查看

3.1.【断言结果】组件

添加路径:【测试计划-点击右键-添加-监听器-断言结果】
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具
整个测试计划下所有请求所有断言结果报错信息均会在此显示,如下图所示,将所有断言结果的报错信息直接展示出来。
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具

3.2.【察看结果树】组件

添加路径:【测试计划-点击右键-添加-监听器-查看结果树】,整个测试计划下所有请求所有断言结果报错信息均会在此显示,如下图的形式,切换查看。
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具

四、实例演示

已知请求的接口,响应状态码:200,响应结果包含:token字段,如下图,按照【2.2.断言源码】设置脚本,断言成功通过
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具
修改断言脚本如下图所示:
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具
查看断言结果:2个断言均不通过,如下图所示
1、【察看结果树】组件,查看断言结果
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具
2、【断言结果】组件,查看断言结果
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具

五、BeanShell简介

Beanshell是一种类似JAVA的脚本语言,通过BeanShell可以对请求数据、响应数据或环境变量进行更加灵活的处理和判断。还可以直接调用外部的JAR包,例如:可以直接引入现成的第三方JSON解析包来使用。
在JMeter的多种组件中都有BeanShell的身影,如下:

定时器:BeanShell Timer
前置处理器:BeanShell PreProcessor
采样器:BeanShell Sampler
后置处理器:BeanShell PostProcessor
断言:BeanShell Assert
监听器:BeanShell Listener

在JMeter运行的流程控制中,BeanShell出现的位置,如下图所示:
jmeter beanshell断言,接口测试,Jmeter,工具类,jmeter,java,单元测试,BeanShell断言,测试工具
Beanshell的内置变量和方法
Beanshell有一些默认的内置变量和方法,用户可以通过这些变量与JMeter进行交互,例如:
1、prInt:非GUI模式下打印信息(输出信息到stdout,标准输出控制台)。
2、log:输出信息到日志(文件)

  • log.debu(“调试信息”)
  • log.info(“响应状态码” + ResponseCode)
  • log.warn(“警告信息”)
    log.error(“出错信息”)

3、ResponseCode:响应状态码(String类型)。
4、ResponseHeaders:响应头(String类型)。
5、prev:获取当前请求结果

  • prew.getResponseDataAsString():获取响应体数据(String类型)。
  • prew.getResponseCode():获取状态码(同ResponseCode,String类型)。

6、vars:操作JMeter变量

  • String var1 = vars.get(“变量名”):获取变量的值(假设为String类型)。
  • vars.put(“变量名”, 变量值):设置变量值。

7、props:操作JMeter属性

  • props.get(String,String) 可以获取JMeter中已经生成的属性。
  • props.put(String,String)可以创建和更新JMeter属性。

8、ctx:获取当前线程上下文数据(可获取所有信息)文章来源地址https://www.toymoban.com/news/detail-784076.html

  • ctx.getVariables(“变量名”):获取变量值(同vars.get())
  • ctx.setVariables(“变量名”,“变量值”):设置变量(同vars.put())
  • ctx.getProperties(“属性名”):获取属性值(同props.get())。
  • ctx.setProperties(“属性名”,“属性值”):设置属性(同props.put()
  • ctx.getPreviousResult():获取当前请求结果同(prev)
  • ctx.getCurrentSampler():获取当前采样器。
  • ctx.getPreviousSampler():获取前一采样器。
  • ctx.getThreadNum():获取线程数。
  • ctx.getThreadGroup():获取线程组。
  • ctx. getThread():获取当前线程。
  • ctx.getEngine():获取引擎。
  • ctx.isSamplingStarted():判断采样器是否启动。
  • ctx.isRecording():判断是否开启录制。
  • ctx.getSamplerContext():获取采样器山下文数据。

到了这里,关于Jmeter常用断言之BeanShell断言详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • jmeter使用beanshell

    1.使用jar包需要将依赖和脚本放在安装路径下的lib/ext中,这样可以避免很多问题产生 pip3 install -i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com allure_pytest-2.13.2-py3-none-any.whl 通过docker安装的Jenkins容器 需要再Jenkins容器中安装python3环境以及周边插件,上面的命令和处理

    2024年02月04日
    浏览(46)
  • jmeter--7.BeanShell

    目录 1. beanshell常用语法 1.1 log:日志写入 1.2 vars:设置和引用局部变量(同线程组) 1.3 props:设置和引用全局变量(跨线程组) 1.4 prev:获取前一个请求返回的信息 2. beanshell调用java代码 2.1 beanshell直接调用java文件(针对单个文件) 2.2 beanshell直接调用jar包 3. beanshell调用py

    2024年01月20日
    浏览(47)
  • Jmeter 中 Beanshell 的使用

    目录 前言: Beanshell 介绍 常用内置变量 log vars 和 props vars 常用方法: props 常用方法: prev 综合运用 JMeter 是一个广泛使用的性能测试工具,它支持许多不同的测试技术和方法。其中,Beanshell 是一种常用的脚本语言,它可以用来自动化测试脚本的执行和参数化测试。 Beanshel

    2024年02月16日
    浏览(63)
  • JMeter-BeanShell预处理程序和BeanShell后置处理程序的应用

    BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,JMeter性能测试工具也充分接纳了BeanShell解释器,封装成了可配置的BeanShell前置和后置处理器,分别是 BeanShell Preprocessor(BeanShell预处理程序)和BeanShell Postprocessor(BeanShell后置处理程序),能通

    2024年04月10日
    浏览(44)
  • jmeter-BeanShell预处理器与BeanShell后置处理器的使用

    BeanShell是一个小型嵌入式Java源代码解释器,具有对象脚本语言特性,能够动态地执行标准JAVA语法,并利用在JavaScript和Perl中常见的松散类型、命令、闭包等通用脚本来对其进行拓展。 前置处理器:请求发送之前对请求参数做一些处理 后置处理器:请求发送完成之后对响应数

    2023年04月17日
    浏览(43)
  • 【JMeter】使用BeanShell写入内容到文件

    目录 使用BeanShell写入内容到文件 一、前言 二、提取 三、写入 ​在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时,就经常能够遇到这种情况。要想达到这种目的,我们一般采取BeanShell后置处理器来将内容写入到文件。 ​

    2024年02月12日
    浏览(40)
  • 使用BeanShell写入内容到文件【JMeter】

    ​ 在我们日常工作中,可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时,就经常能够遇到这种情况。要想达到这种目的,我们一般采取BeanShell后置处理器来将内容写入到文件。 ​ 在目前大多数的性能测试中,都是以JSON形式返回结果。因此我

    2024年02月11日
    浏览(45)
  • Jmeter之Beanshell解析并提取json响应

    将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中;否则会报:Typed variable declaration : Class: JSONObject not found in namespace的错误 利用beanshell获取到json响应,然后通过JSONObject 和JSONArray 将数组解析,遍历数组的length之后,提取参数值 我们需要解析如下

    2024年02月16日
    浏览(45)
  • 6.jmeter非GUI命令及Beanshell组件

    1. -n 使用非gui方式,不能单独使用,必须和-t(指定jmeter的脚本)一起用。 只会生成一个log日志文件,没有任何报告输出 2. -l 生成jtl格式的报告 注意:修改jmeter.propties配置文件 jtl报告查看,在察看结果树中游览文件并打开 3. -e 生成html报告,不能单独使用,一般和-o(输出)

    2024年01月25日
    浏览(48)
  • Jmeter beanshell追加写文件和覆盖写文件方法

    写在前面: 众所周知,jmeter中的beanshell的功能非常强大,其中beanshell写文件,对于使用jemter进行接口或者性能测试,是一个非常有用的功能。 那如何利用beanshell写文件呢? 以及追加写文件和覆盖原有内容的写文件,两个方式的代码,有什么不同? 请见本博文 1. 追加写文件

    2023年04月27日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包