JMeter学习-015-JMeter 断言之-Bean Shell Assertion

 

 


前面的博文中有对 JMeter 中的 响应断言 进行了讲解并实例演示,详情敬请参阅博文:JMeter学习-007-JMeter 断言实例之一 - 响应断言。
 
 
 
在 JMeter 中总计提供了如下几种 BeanShell 组件:
 
Beanshell Sampler:单独的采样器。
 
Beanshell PreProcessor:针对其他采样器的前置处理器。可以在采样器执行之前进行预处理操作,生成相关测试数据供采样器使用,相当于 TestNG 中的 before annotation。
 
Beanshell PostProcessor:针对其他采样器的后置处理器。可以在采样器执行之后进行测试环境恢复或数据清理等操作,相当于 TestNG 中的 after annotation。
 
Beanshell Assertion:JMeter 中的高级断言,可直接调用 JMeter API 进行相关的脚本操作,同时可进行断言结果的设定,实现对脚本测试结果报告的定制输出等。
 
_Beanshell function:JMeter 中的调用函数,允许在采样器等的执行过程中调用已存在的扩展脚本中的函数方法。
 
 
 
此文主要讲述 JMeter 断言中的 Bean Shell Asserttion。其对应的路径为:【 添加 / 断言 / Bean Shell Assertion】,其配置页面如下所示:
 


配置参数列表说明如下:
 


配置项属性
 
详细描述
 
是否必填
 


名称
 
脚本目录树显示当前 Bean Shell Assertion 的概要描述性名称。该名称存储在脚本变量标签中。
 

 


注释
 
对当前项更加详细的描述。例如相关业务描述等等。
 

 


Reset bsh.Interpreter before each calll
 
若选择此项,则将为每个样本创建对应的解释器。一般用不到。
 

 


参数
 

传递到脚本的参数,有如下两种参数传递方式:
 1.String Parameters:作为单一的变量参数传递
 2.String[] bash.args:作为数组的字符串数组参数,参数之间通过空格进行分割
 

 


Script file
 
包含 BeanShell 脚本的运行文件。将重写当前脚本 Script,其文件名存储在脚本变量名中。
 

 


Script
 
BeanShell 脚本。当包含了 BeanShell 脚本文件时,Script 可为空。
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
BeanShell 获取变量的两种方法如下所示(假定需获取的变量分别为 exp_sysNo、sysNo):
 
// get compare data
exp = vars.get("exp_sysNo").toString();
act = String.valueOf( ${sysNo});
 
 
 
修改 exp_sysNo 的方法如下所示(修改 exp_sysNo 数据后,原来获取的 exp 需要重新获取):
 
vars.put("exp_sysNo", "exp_sysNo");
 
 
 
下面为 BeanShell Assert 的简单应用实例,敬请参阅!
 

BeanShell Assertion 简单实例源码
 
 
执行结果如下所示:
 

 

 

2015/09/02 17:22:35 INFO  - jmeter.engine.StandardJMeterEngine: Running the test!

2015/09/02 17:22:35 INFO  - jmeter.samplers.SampleEvent: List of sample_variables: []

2015/09/02 17:22:35 INFO  - jmeter.gui.util.JMeterMenuBar: setRunning(true,*local*)

2015/09/02 17:22:35 INFO  - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : 008-搜索商品

2015/09/02 17:22:35 INFO  - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group 008-搜索商品.

2015/09/02 17:22:35 INFO  - jmeter.engine.StandardJMeterEngine: Thread will continue on error

2015/09/02 17:22:35 INFO  - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 1 ramp-up 0 perThread 0.0 delayedStart=false

2015/09/02 17:22:35 INFO  - jmeter.threads.ThreadGroup: Started thread group number 1

2015/09/02 17:22:35 INFO  - jmeter.engine.StandardJMeterEngine: All thread groups have been started

2015/09/02 17:22:35 INFO  - jmeter.threads.JMeterThread: Thread started: 008-搜索商品 1-1

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement: 2169256

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement: 2169256

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement: Test passed.

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement: 2169256

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement: a

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement: Test failed to assert : Expected <2169256>, but <a>.

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

01.获取请求响应数据:SampleResult.getResponseData()[B@652fd11d

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

02.获取请求响应返回码:SampleResult.getResponseCode()

200

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

03.获取请求响应信息:SampleResult.getResponseMessage()

OK

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

04.获取请求响应头信息:SampleResult.getResponseHeaders()

HTTP/1.1 200 OK

Server: nginx

Date: Wed, 02 Sep 2015 09:19:43 GMT

Content-Type: text/html; charset=GB2312

Transfer-Encoding: chunked

Connection: keep-alive

Vary: Accept-Encoding

Vary: Accept-Encoding

Cache-Control: max-age=0

Pragma: no-cache

Expires: Wed, 02 Sep 2015 09:19:43 GMT

X-Cache: HIT-LT

Content-Encoding: gzip

 

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

05.获取请求的头信息:SampleResult.getRequestHeaders()

Connection: keep-alive

Charset: UTF-8

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip

User-Agent: Dalvik/1.6.0 (Linux; U; Android 4.4.2; GT-I9502 Build/KOT49H)

Content-Length: 140

Host: mb.51buy.com

 

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

06.获取请求的标签:SampleResult.getSampleLabel()

008-01-搜索商品 【101-006-78945 | 29313】

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

07.获取请求执行结果:SampleResult.isSuccessful()

true

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

08.设置请求响应的返回码:SampleResult.setResponseCode("502")

void

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

09.设置请求响应的信息:SampleResult.setResponseMessage("SampleResult.setResponseMessage")

void

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

10.获取请求的返回码:SampleResult.getResponseCode()

502

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

11.获取请求的响应信息:SampleResult.getResponseMessage()

设置响应信息:SampleResult.setResponseMessage

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

12.获取请求的头信息:vars.toString()

org.apache.jmeter.threads.JMeterVariables@6e6e7861

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

13.获取请求的头信息:props.toString()

{not_in_menu=org.apache.jmeter.protocol.http.modifier.gui.ParamModifierGui, HTTP User Parameter Modifier, org.apache.jmeter.protocol.http.control.gui.WebServiceSamplerGui, xml.parser=org.apache.xerces.parsers.SAXParser, cookies=cookies, wmlParser.className=org.apache.jmeter.protocol.http.parser.RegexpHTMLParser, START.YMD=20150902, HTTPResponse.parsers=htmlParser wmlParser, view.results.tree.renderers_order=.RenderAsText,.RenderAsRegexp,.RenderAsCssJQuery,.RenderAsXPath,.RenderAsHTML,.RenderAsHTMLWithEmbedded,.RenderAsDocument,.RenderAsJSON,.RenderAsXML, remote_hosts=127.0.0.1, system.properties=system.properties, beanshell.server.file=../extras/startup.bsh, jmeter.version=2.13 r1665067, log_level.jmeter.junit=DEBUG, sampleresult.timestamp.start=true, START.HMS=170201, jmeter.laf.mac=System, log_level.jorphan=INFO, classfinder.functions.contain=.functions., user.properties=user.properties, wmlParser.types=text/vnd.wap.wml , log_level.jmeter=INFO, TESTSTART.MS=1441185755385, START.MS=1441184521097, classfinder.functions.notContain=.gui., htmlParser.types=text/html application/xhtml+xml application/xml text/xml, upgrade_properties=/bin/upgrade.properties}

 

 

2015/09/02 17:22:35 INFO  - jmeter.util.BeanShellTestElement:

14.获取请求的头信息:ctx.toString()

org.apache.jmeter.threads.JMeterContext@349e3c2b

 

 

2015/09/02 17:22:35 INFO  - jmeter.threads.JMeterThread: Thread is done: 008-搜索商品 1-1

2015/09/02 17:22:35 INFO  - jmeter.threads.JMeterThread: Thread finished: 008-搜索商品 1-1

2015/09/02 17:22:35 INFO  - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test

2015/09/02 17:22:35 INFO  - jmeter.gui.util.JMeterMenuBar: setRunning(false,*local*)


 
 
 
 
PS:BeanShell 是一个 Java 轻量化脚本语言,详细信息请参阅: BeanShell官方网址。
 
至此, JMeter学习-015-JMeter 断言之-Bean Shell Assertion 顺利完结,希望此文能够给初学 JMeter 的您一份参考。
 
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
 
 

我本渺小,但山峰,我一次次绝顶!


PS:若有错误,敬请告知,不胜感激!
Copyright @范丰平 版权所有,如需转载请标明本文原始链接出处,严禁商业用途! 我的个人博客链接地址:http://www.cnblogs.com/fengpingfan

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值