Jmeter:在setUp线程组中初始化全局工具类

好处

在setUp线程组中初始化全局工具类,有什么好处?

  • 不同线程组共用一个工具类,有效拆分代码
  • 当工具类需要修改时,只需修改一个地方(遵循『不写重复代码』原则)

坏处

当想要压测时,会共用一个token

怎么实现

  1. 在 Jmeter 新建 setUp Thread Group

  2. 在 setUp Thread Group 中新建

  3. 在 JSR223 Sampler 中选择 Script language 为 groovy,至于为什么选择 groovy,参考链接:https://www.cnblogs.com/testopsfeng/p/14629162.html

  4. 在 JSR223 Sampler 中输入代码:

    // 工具类
    class Utils<T> {
        /**
         * @param items 数组
         * @return 随机返回一个
         */
        T randomChoose(List<T> items) {
            println("run randomChoose")
            def random = new Random()
            def nextInt = random.nextInt(items.size())  /*0 到 size - 1*/
            def item = items.get(nextInt)
            return item
        }
    }
    // 创建实体类
    def utils = new Utils<Object>()
    // 传入props
    props.put("utils", utils)
    
  5. 在其他线程组的 JSR223 Sampler 中调用工具类,代码如下:

    // 从props获取utils
    def utils = props.get("utils")
    def str = ["111","222","333","444"]
    def choose = utils.randomChoose(str)
    log.error("ThreadNum is: " + ctx.getThreadNum() + " ,choose: " + choose)
    
  6. 在 ${__groovy(,)} 函数中调用工具类,脚本如下(建议在函数助手弹窗中编写脚本,会自动对逗号转义):

    // 其中 __groovy 中的逗号,需要通过转义符 "\" 转义。具体原因见:https://jmeter.apache.org/usermanual/functions.html#__groovy
    ${__groovy(props.get("utils").randomChoose(["111"\, "222"\,"333"\,"444"]),)}
    
posted @ 2021-04-13 14:37  Feng1024  阅读(213)  评论(0编辑  收藏  举报