具有多个HTTP请求的Jmeter线程组如何在每个线程中使用相同的UUID值?
我试图用${__UUID}
和java预处理器用vars.put("uuid", UUID.randomUUID().toString())
创建'用户定义的变量'元素; (独立地)
但是同一个线程中的每个http请求都使用自己的UUID。
将java PreProcessor作为第一个HTTP Request(启动会话)的子项移动,然后在所有请求中将其称为${uuid}
以仅获取一个UUID值。
另一种选择是没有代码:添加User Parameters作为第一个HTTP Request(开始会话)的PreProcessor,Name为uuid2
和Value ${__UUID()}
,你可以使用${uuid2}
只获得一个UUID值。
JMeter变量是每个线程的本地和个体(有关详细信息,请参阅ThreadLocal概念),因此为了创建随机GUID结构,您需要:
${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
${__P(uuid,)}
生成GUID这样,您就可以从不同的线程甚至线程组访问相同的GUID值。
演示:
你不能重用生成的$ {__ UUID},但你总是可以通过JavaScript函数生成它(它允许重用结果):${__javaScript(function s4(){return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);} s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();, var_for_reuse)}