JMeter:几个采样器之间的相同UUID
JMeter: the same UUID between several samplers
具有多个 HTTP 请求的 Jmeter 线程组如何为每个线程使用相同的 UUID 值?
我尝试使用 ${__UUID}
创建 'user defined variables' 元素,使用 vars.put("uuid", UUID.randomUUID().toString())
创建 java 预处理器; (独立)
但同一线程中的每个 http 请求都使用自己的 UUID。
将 java 预处理器作为第一个 HTTP Request(开始会话)的 child 移动,然后将其称为 ${uuid}
请求只获取一个 UUID 值。
另一个没有代码的选项:添加用户参数作为第一个HTTP Request(启动会话)的预处理器,名称为uuid2
,值${__UUID()}
并且您可以使用 ${uuid2}
来仅获取一个 UUID 值。
JMeter 变量对于每个线程都是本地的和独立的(有关详细信息,请参阅 ThreadLocal 概念)因此,为了创建一个随机的 GUID 结构,您需要:
只执行一次这个函数(可选,但很高兴有)。例如,可以使用 If Controller 并将条件设置为类似以下内容来完成:
${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
- 使函数执行结果对所有 JMeter 线程可用。有多种方法,最简单的是通过 setProperty() function
将其转换为 JMeter 属性
- 在需要的地方将使用__P() function生成的GUID引用为
${__P(uuid,)}
这样您就可以从不同的线程甚至线程组访问相同的 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)}
具有多个 HTTP 请求的 Jmeter 线程组如何为每个线程使用相同的 UUID 值?
我尝试使用 ${__UUID}
创建 'user defined variables' 元素,使用 vars.put("uuid", UUID.randomUUID().toString())
创建 java 预处理器; (独立)
但同一线程中的每个 http 请求都使用自己的 UUID。
将 java 预处理器作为第一个 HTTP Request(开始会话)的 child 移动,然后将其称为 ${uuid}
请求只获取一个 UUID 值。
另一个没有代码的选项:添加用户参数作为第一个HTTP Request(启动会话)的预处理器,名称为uuid2
,值${__UUID()}
并且您可以使用 ${uuid2}
来仅获取一个 UUID 值。
JMeter 变量对于每个线程都是本地的和独立的(有关详细信息,请参阅 ThreadLocal 概念)因此,为了创建一个随机的 GUID 结构,您需要:
只执行一次这个函数(可选,但很高兴有)。例如,可以使用 If Controller 并将条件设置为类似以下内容来完成:
${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
- 使函数执行结果对所有 JMeter 线程可用。有多种方法,最简单的是通过 setProperty() function 将其转换为 JMeter 属性
- 在需要的地方将使用__P() function生成的GUID引用为
${__P(uuid,)}
这样您就可以从不同的线程甚至线程组访问相同的 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)}