Jmeter 之 Beanshell

Beanshell是java的轻量级脚本;

jmeter中关于beanshell的有:

1.Beanshell 请求,完成Beanshell请求组件中定义的脚本功能;

2.Beanshell 后置处理器,可通过编程方式获取对应请求的响应结果;

3.Beanshell 断言:可通过编程方式实现复杂的断言逻辑;

4.Beanshell 前置处理器:可通过编程方式在发起请求以前做预处理,比如编码或者加密;

5.Beanshell 计时器:编码实现条件定时功能;

6.Beanshell 监听器:监听Beanshell运行结果;

Beanshell内置变量介绍

Beanshell有一些默认的内置变量,用户可以通过这些变量与jmeter进行交互,其中主要的变量及其使用方法如下:

log:打印日志,写入信息到jmeter.log文件,帮助调试脚本;如,log.info("heheda");

vars:操作jmeter变量,生成、更新、获取当前脚本的jmeter变量;(只能在同一线程组内传递);

  常用方法:

        a) vars.get(String key):从jmeter中获取变量值;如,user是变量,vars.get("user");

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

System.out.println("xixi");

String a="3";System.out.println(a);

使用先前定义的变量name;System.out.println("${name}");//需要加"",否则会报错Attempt to access property on undefined variable or class name

当前beanshell中vars.put("name","he");使用System.out.println("${name}");会原样输出;

props:操作jmeter属性,生成、更新、获取当前脚本的jmeter属性,使用方法和vars一样;(可在整个测试计划中跨线程组传递)

ctx:获取当前线程上下文,可获取当前线程的请求信息和相应信息(可以获取http请求和响应的所有数据);

prev:获取当前请求的结果;

Beanshell下所有变量如下:

log,Label(请求标签),FileName(文件名,如果有),Parameters,bsh.args,SampleResult,ResponseCode(默认是200),ResponseMessage(默认是ok),

IsSuccess(默认是true),ctx,vars,props;

自定义函数:

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

示例:

1.在Test Plan中添加一个变量:url = 百度

 2.Debug 请求 1和Debug 请求 2什么都不处理,用来查询对比BeanShell请求处理后的结果;

 3.BeanShell请求中的脚本如下;

 4.运行结果;

debug请求1中显示:url=百度

debug请求2中显示:url=sogou,name=zhangshao

bean shell可以接受传入参数,如:${url},参数可通过bsh.args[0]提取;

 

 其它用法:

1.在Test Plan中定义3个变量;

 2.BeanShell请求如下;

   a)、beanshell可以接受传入参数,如下图,${url} ${url2} ${url3}

   b)、参数可以通过bsh.args[0],bsh.args[1],bsh.args[2]按顺序提取参数;

   c)、beanshell提供了一个内置变量Parameters,来保存参数的集合;

 3.运行结果;

察看结果树——debug请求,显示该jmx脚本中所有变量;

察看结果树——BeanShell请求1中显示响应码,响应信息,响应数据;

 

jmeter.log中显示log.info(**)的信息;

 

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/12542978.html