beanshell(java beanshell的用法)

beanshell(java beanshell的用法)

什么是Bean Shell

  • BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
  • BeanShell是一种松散类型的脚本语言(这点和JS类似);
  • lBeanShell是用Java写成的,一个型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性,非常精简的解释器jar文件大小为几百k。
  • BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。

官网:http://www.beanshell.org/

Jmeter有哪些Bean Shell

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

beanShell主要使用场景

(1)当目前提供jmeter的函数不满足测试要求。

(2)测试中必须使用第三方jar包中和函数时。如加密和解密之类。

前置处理器:BeanShell PreProcessor

表示使用处理,进行预处理使用此组件。

脚本中常用变量:ctx vars props prev sampler log

beanshell(java beanshell的用法)

BeanShell PreProcessor

测试代码:

import com.test.*;
//测试ctx 
int threadnum=ctx.getThreadNum() ;
log.warn("线程号:"+threadnum);
//测试外部函数
String str = StringUtil.formatString(threadnum, 10, '0', "left");
log.warn("--"+str);

//测试vars
vars.put("numb",str);
String num=vars.get("numb");
log.warn("++"+num);
//测试props
props.put("pro1","123456");
String str2=props.get("language");
String str3=props.get("pro1");
log.warn(str2);
log.warn(str3);

//参数
log.warn(Parameters);
log.warn(bsh.args[0]);
log.warn(bsh.args[1]);

//sampler
String str4 = sampler.getName();
log.warn(str4);

sampler.setName("beanshell1");
str5 = sampler.getName();
log.warn(str5);

测试结果:

beanshell(java beanshell的用法)

测试结果

取样器:BeanShell Sampler


beanshell(java beanshell的用法)

BeanShell Sampler 直接模拟调用JAVA API,直接压测JAVA API。

脚本中常用变量:SampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log

beanshell(java beanshell的用法)

BeanShell Sampler

测试代码:

int i=ctx.getThreadNum();
if(i%2==0){
	IsSuccess=true;
	ResponseMessage ="ResponseMessage ture"; 
	ResponseCode = 200;
}

if(i%2==1){
	IsSuccess=false;
	ResponseMessage ="ResponseMessage false";
	ResponseCode = 404;
}
SampleResult ="beanShell Samper SampleResult 1";

测试结果:

beanshell(java beanshell的用法)

BeanShell Sampler 测试结果1

beanshell(java beanshell的用法)

BeanShell Sampler 测试结果2

断言:BeanShell Assertion

BeanShell直接使用断言功能,根据定义脚本实现断言功能。

脚本中常用变量:

可读/写变量: Failure, FailureMessage, SampleResult, vars, props, log.

只读变量: Response[Data|Code|Message|Headers], RequestHeaders, SampleLabel,

SamplerData, ctx

beanshell(java beanshell的用法)

BeanShell Assertion

测试代码:

boolean f1=Failure;
Failure=true;   //此变量为ture时,则在结果树能查询断言结果
log.warn("--"+f1.toString());
FailureMessage="test FailureMessage";  //设置断言错误信息
String str1 = RequestHeaders;   //获得请求头部信息
String str2 = SampleLabel;  
String str3 = SamplerData;  //获得请求数据

   
beanshell(java beanshell的用法)
String str4 = ResponseCode; //获得返回响应码 String str5 = ResponseMessage; //获得返回响应信息 String str6 = ResponseHeaders; //获得返回响应头部信息 String str7 = new String(ResponseData); //String str6 = ResponseHeaders; //获得返回响应头部信息 log.warn("--"+str1); log.warn("--"+str2); log.warn("--"+str3); log.warn("--"+str4); log.warn("--"+str5); log.warn("--"+str6); log.warn("--"+str7);

测试结果:

beanshell(java beanshell的用法)

BeanShell Assertion 测试结果1

beanshell(java beanshell的用法)

BeanShell Assertion 测试结果2

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/23725.html

(0)
上一篇 2023-10-21 18:30
下一篇 2023-10-21 20:30

相关推荐