jmeter中没有sampler_jmeter(七)-BeanShell常用内置变量和场景

Bean Shell常用内置变量

JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:

  • log:写入信息到jmeber.log文件,对应org.apache.logging.slf4j.Log4jLogger

使用方法:

log.info(“This is log info!”);

log.debug(“This is log debug!”);

log.warn(“This is log warn!”);

log.error(“This is log error!”);

  • ctx:该变量引用了当前线程的上下文;

使用方法:

ctx.getThreadNum() ;

更多使用方法可参考:org.apache.jmeter.threads.JMeterContext。

https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterContext.html

  • vars: (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是 Map),它是测试用例与BeanShell交互的桥梁,常用方法:

a) vars.get(String key):从jmeter中获得变量String类型值

b) vars.put(String key,String value):String类型数据存到jmeter变量中

c) vars.getObject(String key):从jmeter中获得变量object值

d) vars.putObject(String key, Object value): 保存对象到jmeter变量中

更多方法可参考:org.apache.jmeter.threads.JMeterVariables

https://jmeter.apache.org/api/org/apache/jmeter/threads/JMeterVariables.html

  • props: (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。

a) props.get("language");在文件jmeter.properties中定义

b) props.put("PROP1","1234");设置属性

  • prev: (SampleResult):获取前面的sample返回的信息,常用方法:

a)prev.getResponseDataAsString():获取响应信息

b)prev.getResponseCode() :获取响应code

更多方法可参考:org.apache.jmeter.samplers.SampleResult

https://jmeter.apache.org/api/org/apache/jmeter/samplers/SampleResult.html

  • sampler: (Sampler)访问当前samper对象;常用方法

sampler.setName("beanshell1");

sampler.getName();

备注:

对于不知道内置变量是什么类型对应什么类,可打印出来对应类名;再通过类名查找jmeter api文件,查看具体方法。

log.warn("ctx:"+ctx.getClass().toString());

86f67a7f63d002c955fb3536f029c262.png

class 测试结果

Class [B 表示此类是baye [] 及字节数组。

Bean Shell常用引用场景

  • 自定义函数
  • 引用外部java文件
  • 引用外部class文件
  • 引用外部Jar包

一、自定义函数:

在BeanShell中,我们可以使用java语言自定义函数来处理特定的逻辑,结合BeanShell的内置对象进行变量的存取,方便我们进行测试提高脚本的灵活性。

示例:

1、在Test Plan中添加一个变量:hello =kitty

1ad837d0d3579f4131d8623b52330407.png

定义变量

2、Debug sampler-1和Debug sampler-2什么都不处理,用来查询对比beahshell处理前后的结果

3、BeanShell Sampler中的脚本如下:

57f3d12685ff9448286da12810f3740c.png

设置脚本

4、运行结果:

a02ac5831aab0a6384f34705ca1493cc.png

beanshell前测试结果

5d9d65414cfee7097182fc786b235876.png

beanshell测试结果

afa462b466397a703255de5f3429b4ff.png

beanshell后测试结果

二、引用外部java文件:

如果我们已经有现成的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 方法。

fbebf83984944204453e397a4630b245.png

引入类

3、运行结果:

fecaa8439d3fea8f11893197d07bc0d9.png

测试结果

三、引用外部class文件:

在jmeter中也可以直接引用class文件,示例如下:

1、直接把上例中的java文件编译成class文件。

2、Bean Shell使用代码如下:

addClassPath("D:")方法引入 class文件,在用import导入包及类,然后就可以像java一样调用了

e504289905f1eea0248d7f74093e15f7.png

引入外部class

3、运行结果:

1c4b124d4e208f299c412e8710a13db8.png

测试结果

四、引用外部Jar包:

上面二、三介绍了如何引用外部java和class文件,如果文件比较多时我们可以把它们打成一个jar包然后在jemter中调用

jmeter中引入jar的方法:

方式一:把jar包放到jmeter目录安装libext下

方式二:在Test Plan的右侧面板最下方直接添加需要引用的jar包,如下图:

326a23a744d7ee483805dc7c1867c3c8.png

导入jar

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值