zoukankan      html  css  js  c++  java
  • Jmeter组件8. BeanShell Sampler

    BeanShell是一个小巧免费的JAVA源码解释器,支持对象式的脚本语言特性,亦可嵌入到JAVA源代码中,能动态执行JAVA源代码并为其扩展了脚本语言的一些特性,像JavaScript和perl那样的弱类型、命令式、闭包函数等等特性都不在话下

    我想了下,这个组件可以放在请求之间来处理一些计算或者变量赋值等,没用过,不过提供了一个代码接口

    通过一个简单的小例子来说明一下,脚本结构如下,首先我定义了几个变量在User defined variables里面,然后通过Debug Sampler打印出来,接着用Beanshell Sampler去改变了几个值,最后再次打印:

    BeanShell Sampler里面的脚本如下

    Parameters里面放了三个引用的变量,我在User Defined Variables里面定义如下

    然后执行之后,第一个Debug Sampler里打印如下,这应该没什么问题:

    然后第二个Debug Sampler里面打印结果如下:

    首先给var1赋了个新值,造了个var4,赋值为Parameters,看打印结果,存的是一个String类型的值

    var2的值,我重新赋值为var3里面的值,新定义个变量start_time,取的是Jmeter里面的属性START.HMS

    另外,你要是不清楚Jmeter自带哪些属性,可以在workbench下面加一个Property Display控件

    另外,log.info打印的位置在控制台

    可以再看下beanshell Sampler的结果,Responsecode 还有ResponseMessage都是可以定制的

    最后,附BeanShell重用内置变量,很多我也还没用到过,有实践机会的时候可以再好好研究下

    • log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);

    • ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext

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

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

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

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

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

        a) props.get("START.HMS");  注:START.HMS为属性名,在文件jmeter.properties中定义 

        b) props.put("PROP1","1234"); 

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

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

        b) getResponseCode() :获取响应code

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

    • sampler - (Sampler):gives access to the current sampler

  • 相关阅读:
    【LeetCode OJ】Remove Element
    【LeetCode OJ】Remove Duplicates from Sorted Array
    【LeetCode OJ】Swap Nodes in Pairs
    【LeetCode OJ】Merge Two Sorted Lists
    【LeetCode OJ】Remove Nth Node From End of List
    【LeetCode OJ】Two Sum
    【LeetCode OJ】Majority Element
    最长公共子序列问题
    php fopen与file_get_contents的区别
    PHP 技巧集合
  • 原文地址:https://www.cnblogs.com/ryansunyu/p/5821985.html
Copyright © 2011-2022 走看看