BeanShell⽤法汇总(部分摘抄⾄⽹络)
说明:本⽂部分资料摘抄⾄
来源: wwwblogs/puresoul/p/4915350.html
来源: wwwblogs/puresoul/p/4949889.html
来源: blog.csdn/silencemylove/article/details/51373873
⼀、什么是Bean Shell
BeanShell是⼀种完全符合Java语法规范的脚本语⾔,并且⼜拥有⾃⼰的⼀些语法和⽅法;
BeanShell是⼀种松散类型的脚本语⾔(这点和JS类似);
BeanShell是⽤Java写成的,⼀个⼩型的、免费的、可以下载的、嵌⼊式的Java源代码解释器,具有对象脚本语⾔特性,⾮常精简的解释器jar⽂件⼤⼩为175k。
BeanShell执⾏标准Java语句和表达式,另外包括⼀些脚本命令和语法。
官⽹:
⼆、Jmeter有哪些Bean Shell
定时器:  BeanShell Timer
前置处理器:BeanShell PreProcessor
采样器:  BeanShell Sampler
后置处理器:BeanShell PostProcessor
断⾔:   BeanShell断⾔
:  BeanShell Listener
三、BeanShell的⽤法
  在此介绍下BeanShell PreProcessor的⽤法,其它的beahshell可以类推。在此我们使⽤beahshell调⽤⾃⼰写的⼯具类,⼯具类实现了密码的加、解密功能:
1、在eclipse写好代码,然后把该类打成jar包(在类上点击右键->Export->jar file)ar包放到jmeter⽬录\apache-jmeter-2.13\lib\ext下
3、打开jmeter,添加⼀个http sampler(调⽤登录接⼝),在sampler下添加⼀个BeanShell PreProcessor(如果jmeter已经打开了,步骤2中jar包要⽣效,必须才重启jmeter)
4、在beanshell PreProcessor中导⼊我们的jar包,调⽤⾥⾯的加、解密码⽅法,把结果保存在jmeter变量中,下⾯两个⽅法是beanshell中我们最常⽤到的:
<(String paramStr):获得变量值
vars.put(String key,String value):,将数据存到jmeter变量中
import com.pingan.ff.account.user.utils.*;
//加密
System.out.println("*****加密*****");
String password = "123123";
String encode = Key(password);//调⽤⼯具类中的⽅法进⾏加密
System.out.println("Set my encode");
vars.put("encode",encode);//把值保存到jmeter变量encode中
String ("encode");
System.out.println("Get my encode: " + getEncode);
5、把加密后的密码存到jmeter变量中,然后在http sampler中就可以通过${encode}进⾏使⽤了:
6、执⾏脚本:
四、Bean Shell常⽤内置变量
    JMeter在它的BeanShell中内置了变量,⽤户可以通过这些变量与JMeter进⾏交互,其中主要的变
java源代码加密量及其使⽤⽅法如下:
log:写⼊信息到jmeber.log⽂件,使⽤⽅法:log.info(“This is log info!”);
ctx:该变量引⽤了当前线程的上下⽂,使⽤⽅法可参考:。
vars - (JMeterVariables):操作jmeter变量,这个变量实际引⽤了JMeter线程中的局部变量容器(本质上是Map),它是测试⽤例与BeanShell交互的桥梁,常⽤⽅法:
    a) (String key):从jmeter中获得变量值
    b) vars.put(String key,String value):数据存到jmeter变量中
    更多⽅法可参考:
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引⽤了JMeter的配置信息,可以获取Jmeter的属性,它的使⽤⽅法与vars类似,但是只能put进去String类型的值,⽽不能是⼀个对象。对应于java.util.Properties。
    a) ("START.HMS");  注:START.HMS为属性名,在⽂件jmeter.properties中定义
    b) props.put("PROP1","1234");
prev - (SampleResult):获取前⾯的sample返回的信息,常⽤⽅法:
    a) getResponseDataAsString():获取响应信息
    b) getResponseCode() :获取响应code
    更多⽅法可参考:
sampler - (Sampler):gives access to the current sampler
五、⾃定义函数
  在BeanShell中,我们可以使⽤java语⾔⾃定义函数来处理特定的逻辑,结合BeanShell的进⾏变量的存取,⽅便我们进⾏测试提⾼脚本的灵活性。
⽰例:
1、在Test Plan中添加⼀个变量:hello = kitty
2、Debug sampler-1和Debug sampler-2什么都不处理,⽤来查询对⽐beahshell处理前后的结果
3、BeanShell Sampler中的脚本如下:
4、运⾏结果:
Debug sampler-1中显⽰:hello=kitty
BeanShell sampler中返回结果为:success
Debug sampler-1中显⽰:hello=world,jmeter=111111
  有没有觉得上⾯(三)中⾃定义函数这样的⽅式太⿇烦并且也不美观?⽽且如果我们已经有现成的java源⽂件或者class⽂件时,我们有没有什么办法直接在jemter中引⽤?这就是这部分要介绍的内容,直接上⽰例:
1、假如我有⼀个java 源⽂件,名为:Myclass.java,代码如下: 
package test;
public class Myclass
{
public int add(int a, int b)
{
return a + b;
}
}
2、Bean Shell使⽤代码如下:
  在bean shel中通过source("代码路径")⽅法引⼊java,然后调⽤⽅法和java⼀样,new⼀个class,再调⽤⾥⾯的add ⽅法。
3、运⾏结果:
七、引⽤外部class⽂件
  现在知道如何引⽤外部⽂件,有时候如果我们只有class⽂件怎么办呢?其实在jmeter中也可以直接引⽤class⽂件,⽰例如下:
1、直接把上例中的java⽂件编译成class⽂件,如何编译请⾃⾏百度。
2、Bean Shell使⽤代码如下:
  ⽤addClassPath("D:\\")⽅法引⼊ class⽂件,在⽤import导⼊包及类,然后就可以像java⼀样调⽤了

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。