如何在Jmeter中循环时从CSV更改一个变量值

如何在Jmeter中循环时从CSV更改一个变量值,jmeter,Jmeter,我有一个CSV(Users.CSV),其中包含10000个用户名、姓氏、姓氏和唯一的电子邮件ID。在我的测试计划中的一个POST请求中,我需要通过日期。对于同一日期,我只能发布一次数据。如何使用CSV或任何其他方式处理此问题 我可以想出两个选择: 1.拖动相同Users.CSV中所有10000个条目的相同日期。然后在同一CSV中再次复制粘贴用户名、姓氏、姓氏和电子邮件ID,然后拖动下一个日期。 2.维护两个CSV文件,一个用于用户,一个用于日期。Date.csv将有10000个相同日期的条目,1

我有一个CSV(Users.CSV),其中包含10000个用户名、姓氏、姓氏和唯一的电子邮件ID。在我的测试计划中的一个POST请求中,我需要通过日期。对于同一日期,我只能发布一次数据。如何使用CSV或任何其他方式处理此问题

我可以想出两个选择: 1.拖动相同Users.CSV中所有10000个条目的相同日期。然后在同一CSV中再次复制粘贴用户名、姓氏、姓氏和电子邮件ID,然后拖动下一个日期。 2.维护两个CSV文件,一个用于用户,一个用于日期。Date.csv将有10000个相同日期的条目,10001之后将包含下一个日期

在这两种解决方案中,我都需要保持样本计数,因为我需要在下次运行时从CSV中删除这些条目

有人能分享更好的选择来实现这一点吗

用于生成当前日期(如果需要过去/未来的时间戳,可将其与当前日期组合使用)

默认情况下,
\u time()
函数返回自开始的当前时间(以毫秒为单位),但是您可以使用模式控制格式

有关上述两个和其他JMeter函数用于生成当前日期的更多信息,请参见posts系列(如果需要过去/未来的时间戳,请将其与组合)

默认情况下,
\u time()
函数返回自开始的当前时间(以毫秒为单位),但是您可以使用模式控制格式


有关上述两个JMeter函数和其他JMeter函数的更多信息,请参阅posts系列文章。您可以使用两个组件来解决此问题:-

  • 第1步:使用用户定义的变量在脚本中定义一个vraible,以保留日期计数器,以便在发出特定POST请求时不应使用相同的日期

    步骤2:使用步骤1中定义的变量,并编写脚本以在预处理器中获取唯一的日期。该预处理器应作为子处理器添加到该特定POST请求中

    预处理器的示例代码:-

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
       int dateCounter=Integer.parseInt(vars.get("dateCounter")); 
    
       Date currentDate = new Date();
       SimpleDateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
    
    
       long milliseconds = (long) dateCounter * 24 * 60 * 60 * 1000;
       Date previousDate = new Date(currentDate.getTime() - milliseconds);
       String strDate = date.format(previousDate);
       vars.put("date",strDate);
    
    
       dateCounter  = dateCounter - 1;
       vars.put("dateCounter",Integer.toString(dateCounter));
    

    请注意,我们在示例中使用的是最后1000天,您可以根据需要进行更改。现在,这个
    date
    -一个Jmeter变量可以在整个线程组中使用,一旦您使用partilculare POST采样器生成日期,将为下一个请求生成一个新日期。

    您可以使用两个组件来解决此问题:-

  • 第1步:使用用户定义的变量在脚本中定义一个vraible,以保留日期计数器,以便在发出特定POST请求时不应使用相同的日期

    步骤2:使用步骤1中定义的变量,并编写脚本以在预处理器中获取唯一的日期。该预处理器应作为子处理器添加到该特定POST请求中

    预处理器的示例代码:-

    import java.text.SimpleDateFormat;
    import java.util.Date;
    
       int dateCounter=Integer.parseInt(vars.get("dateCounter")); 
    
       Date currentDate = new Date();
       SimpleDateFormat date = new SimpleDateFormat("dd/MMM/yyyy");
    
    
       long milliseconds = (long) dateCounter * 24 * 60 * 60 * 1000;
       Date previousDate = new Date(currentDate.getTime() - milliseconds);
       String strDate = date.format(previousDate);
       vars.put("date",strDate);
    
    
       dateCounter  = dateCounter - 1;
       vars.put("dateCounter",Integer.toString(dateCounter));
    

    请注意,我们在示例中使用的是最后1000天,您可以根据需要进行更改。现在,这个
    date
    -一个Jmeter变量可以在整个线程组中使用,一旦您使用partilculare POST采样器生成日期,将为下一个请求生成一个新的日期。

    感谢您的解决方案。我能解决我的问题。谢谢你的解决方案。我能够解决我的问题。