jmeter随机变量为所有采样器请求创建相同的数字

时间:2015-09-02 14:59:33

标签: jmeter

在一个线程组中,有多个http请求采样器。我需要为每个请求发送一个号码。对于每个请求,此数字应该不同。当我使用Jmeter随机变量每次为每个请求获取一个随机数。我想在一个线程中我将在n个请求中调用此变量n次,它每次都会给出一个不同的数字,但它在每个调用中给出相同的数字。

请在每次在不同采样器的单个线程中需要时,建议获取随机数的方法。

5 个答案:

答案 0 :(得分:1)

以下是选项:

  1. __counter() function - 每次调用时返回递增的值。
  2. __time() function - 从
  3. 返回当前日期作为时间戳(以毫秒为单位)
  4. __UUID() function - 返回唯一GUID
  5. 有时JMeter的__Random()函数不能产生真正的“随机”值,好像它在同一时刻被调用多次(使用相同的种子) - 参见第2点 - 它将产生2个相等的值。解决方法是:

答案 1 :(得分:1)

就个人而言,我会使用UUID功能。

你可以在你的采样器中使用{__BeanShell(UUID.randomUUID())}来试试。

{__BeanShell(UUID.randomUUID())} 

祝你好运,让我们知道你是如何继续的。

由于

答案 2 :(得分:0)

如果您需要在每个采样器的线程内生成随机数,请使用Random函数。

${__Random(1,100)} - 将生成1到100之间的随机数。

答案 3 :(得分:0)

您必须在线程组中应用一个随机生成器,如果要针对不同的采样器进行不同的触发,则必须为每个请求添加单独的随机生成器。

答案 4 :(得分:0)

使用“添加”>“配置元素”>“随机变量”创建随机数时,出现了类似的问题。像这样被使用-

log.info("******RandomNumber******");
log.info vars.get("p_randomNumber");

//20%
if(${p_randomNumber} <= 20){

    vars.put("prof_cnt", "010DB");
    vars.put("p_username","${p_prof10}"); 
//30%   
}else if(${p_randomNumber} <= 50){

    vars.put("prof_cnt", "015DB");
    vars.put("p_username","${p_prof15}"); 

我们发现,已选中JSR223 PreProcessor复选框“如果可用,则缓存编译的脚本”,这使我们每次通过都获得相同的用户。取消选中该框,一切按计划进行(每次通过都会获得一个新用户)。