zoukankan      html  css  js  c++  java
  • 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!!!
  • 相关阅读:
    salesforce rest api 登录 | Authenticating to Salesforce using REST, OAuth 2.0 and Java
    unknown chromium error 400
    项目管理 status email
    项目管理 管理的是什么?
    java 访问 salesforece rest api
    高质量的软件是否值得付出代价?Martin Flower
    Python 3 os.walk使用详解
    体验Managed Extensibility Framework精妙的设计
    分享插件平台相关的源码分析——SharpDevelop、Composition Application Block、Eclipse OSGi、ObjectBuilder
    分享一个与硬件通讯的分布式监控与远程控制程序的设计(上:自动升级与异步事件)
  • 原文地址:https://www.cnblogs.com/canglongdao/p/12542978.html
Copyright © 2011-2022 走看看