JMeter从4.1版本开始引入了一个新函数“${__threadGroupName}”,这个函数的作用是返回当前线程组的名字。${__threadGroupName}的用途也较为广泛,比如:

  • 在非图形界面执行时,在日志中记录不同脚本的出错信息使用。

  • 用于定义不同脚本(ThreadGroup)特有的标识,如特有的属性(Property)、字符串等。

 不过__threadGroupName的使用是有注意事项的,不能在任何配置元件(Configuration elements)中使用,比如User Defined Variables,包括Test Plan的User Defined Variabels中也不能用。如果在这些地方中使用

 

 脚本执行的时候就会有如下的错误:

 

 jmeter.log中则会有指示稍微明显一点的错误记录,提示我们是ThreadGroupName相关的

 

 比较令人崩溃的是,当不小心这样误用了ThreadGroupName后,JMeter的界面就无法正常关闭了,点X或者从File->Exit菜单中退出,JMeter都会提示有测试正在执行,不能正常结束,只能通过任务管理器杀java进程来关闭JMeter窗口。

 

 我在刚开始用的时候,就在这个问题上浪费了很长的时间,以致于一度想去官网提bug。后来翻JMeter的函数手册,结果发现在函数的说明中对此有一段明确的使用禁忌说明和一个bug描述

 

 

按照这个说明,除了配置元件部分,其他的地方都可以使用,也就是说在Sampler取样器、前置/后置处理器、断言中都可以放心使用。可是~~BUT~~~

 

经过一天痛苦的试验,在前置处理器、后置处理器、断言上尝试了好久,终于发现BeanShell、JSR223的前置处理器、后置处理器、断言均不能用。唯一可以比较稳定使用的就是前置处理器中的User Parameters。当使用的时候,我们在User Parameters中定义一个参数,值设置为${__threadGroupName},然后在其他的需要使用的地方直接引用这个参数。

 

在BeanShell、JSR223的前置、后置处理器和断言中应用JMeter的Parameters

最后再提一下,${__threadGroupName}在Sampler取样器中是可以直接使用不会报错的。​

由于GFW的因素,JMeter的bug62178我还没打开,不知道要不要再去官方提交一下现在发现的这个描述和实际情况不符的bug呢?

posted on 2019-04-09 10:16  快乐杂货铺  阅读(586)  评论(0编辑  收藏  举报