JMeter:几个采样器之间的UUID相同

问题描述 投票:2回答:3

具有多个HTTP请求的Jmeter线程组如何在每个线程中使用相同的UUID值?

我试图用${__UUID}和java预处理器用vars.put("uuid", UUID.randomUUID().toString())创建'用户定义的变量'元素; (独立地)

thread group

但是同一个线程中的每个http请求都使用自己的UUID。

random jmeter uuid
3个回答
4
投票

将java PreProcessor作为第一个HTTP Request(启动会话)的子项移动,然后在所有请求中将其称为${uuid}以仅获取一个UUID值。

另一种选择是没有代码:添加User Parameters作为第一个HTTP Request(开始会话)的PreProcessor,Name为uuid2和Value ${__UUID()},你可以使用${uuid2}只获得一个UUID值。


0
投票

JMeter变量是每个线程的本地和个体(有关详细信息,请参阅ThreadLocal概念),因此为了创建随机GUID结构,您需要:

  • 仅执行一次此功能(可选,但很高兴)。例如,它可以使用If Controller完成,条件设置为: ${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
  • 使函数执行结果可用于所有JMeter线程。有多种方法可以做到这一点,最简单的方法是通过setProperty() function将其转换为JMeter Property
  • 如果需要,请使用__P() function作为${__P(uuid,)}生成GUID

这样,您就可以从不同的线程甚至线程组访问相同的GUID值。

演示:

UUID Property Demo


0
投票

你不能重用生成的$ {__ 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)}


推荐问答