51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3305|回复: 2
打印 上一主题 下一主题

jmeter学习指南之Beanshell Sampler 常用方法

[复制链接]
  • TA的每日心情

    2018-3-26 10:26
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2019-2-10 20:29:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    JMeter 中可以使用 Beanshell Sampler 编写一些简单的脚本,实现更多功能。

    1、Beanshell
    Beanshell 是一种轻量级的 Java 脚本,纯 Java 编写的,能够动态的执行标准 java 语法及一些扩展脚本语法,类似于 javaScript 和 perl。

    2、内置变量
    Beanshell Sampler 中除了可以使用标准 java 语法之外,还有一些定义好的变量,可以直接使用。

    SampleResult
    ResponseCode,
    ResponseMessage
    IsSuccess
    Label
    FileName
    ctx
    vars
    props
    log
    下面我按使用频率,分别讲一下最常用的几种变量。

    3、log
    用于打印日志,最常用,也最简单;
    打印在 jmeter.log 中,可以设置打印级别,可以打印字符串、变量等。
    使用方法:

    1、打印 info 形式的普通字符串日志:
    log.info("hello world");  输出 hello world

    2、拼接字符串和变量 (其中 token 是 jmeter 局部变量):
    log.info("hello world" + "${token}");  输出 hello world 和 token 变量的拼接结果

    3、打印自定义变量
    str = "12345";
    log.info(str);  输出 12345

    4、打印 error 形式的普通字符串日志:
    log.info("hihihi");
    log.error("aaaaa");
    输出的区别:
    2018-12-27 19:05:13,158 INFO o.a.j.u.BeanShellTestElement: hihihi
    2018-12-27 19:05:13,158 ERROR o.a.j.u.BeanShellTestElement: aaaaa

    print() 打印日志
    在 beanshell 中还可以使用 print() 函数来打印日志,输出字符串等信息;

    print() 是在控制台中输出信息,log() 默认是在 jmeter.log 中输出信息。

    4、vars
    用于存取 jmeter 局部变量,很常用,一定要掌握;
    通常用于存取字符串内容,也可以存取对象;
    vars.get()
    String mykey = vars.get("keyname");
    获取变量名为 keyname 的值,并保存在 mykey 中。

    vars.put()
    vars.put("keyname","value");  
    把变量 keyname(值为 value)保存到 jmeter 变量中。

    vars.putObject("OBJname",new Object());
    把一个对象 OBJname 保存到 jmeter 变量中

    vars.remove()
    vars.remove("keyname");
    从 jmeter 变量中删除 keyname。

    5、props
    用于存取 jmeter 全局的静态变量;
    其中的 key 和 value 均是字符串形式;
    ymd = props.get("START.YMD");
    获取属性 START.YMD 的值(脚本启动日期)。

    props.put("PROP1","1234");
    把 1234 存入全局属性 PROP1 中。

    6、ctx
    当前线程的上下文信息;
    使用举例:

    ctx.getCurrentSampler(); 获取当前 sampler 请求

    ctx.getPreviousSampler(); 获取前一个 sampler 请求

    ctx.getThreadNum(); 获取当前线程的序号,从 0 开始计数

    ctx.getThread(); 获取当前线程

    ctx.getThreadGroup(); 获取当前线程组

    ctx.getProperties(); 获取所有属性

    ctx.getVariables(); 获取当前线程的所有变量

    7、SampleResult
    SampleResult.setResponseData(data);
    自定义响应数据。

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 13:12 , Processed in 0.064415 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表