JMeter:几个采样器之间的UUID相同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JMeter:几个采样器之间的UUID相同相关的知识,希望对你有一定的参考价值。
具有多个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结构,您需要:
- 仅执行一次此功能(可选,但很高兴)。例如,它可以使用If Controller完成,条件设置为:
${__groovy(ctx.getThreadNum() == 0 && vars.getIteration() == 1)}
- 使函数执行结果可用于所有JMeter线程。有多种方法可以做到这一点,最简单的方法是通过setProperty() function将其转换为JMeter Property
- 如果需要,请使用__P() function作为
${__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)}
以上是关于JMeter:几个采样器之间的UUID相同的主要内容,如果未能解决你的问题,请参考以下文章