好处
在setUp线程组中初始化全局工具类,有什么好处?
- 不同线程组共用一个工具类,有效拆分代码
- 当工具类需要修改时,只需修改一个地方(遵循『不写重复代码』原则)
怎么实现
-
在 Jmeter 新建 setUp Thread Group
-
在 setUp Thread Group 中新建
-
在 JSR223 Sampler 中选择 Script language 为 groovy,至于为什么选择 groovy,参考链接:https://www.cnblogs.com/testopsfeng/p/14629162.html
-
在 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)
-
在其他线程组的 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)
-
在 ${__groovy(,)} 函数中调用工具类,脚本如下(建议在函数助手弹窗中编写脚本,会自动对逗号转义):
// 其中 __groovy 中的逗号,需要通过转义符 "" 转义。具体原因见:https://jmeter.apache.org/usermanual/functions.html#__groovy ${__groovy(props.get("utils").randomChoose(["111"\, "222"\,"333"\,"444"]),)}