我有CSV(Users.CSV),其中包含10000个唯一的用户名,名字,姓氏和电子邮件ID。在我的测试计划中的一个POST请求中,我需要传递日期。我可以在同一日期只发布一次数据。我如何使用CSV或任何其他方式处理此问题?
我可以想到两个选择: 1.在同一Users.CSV中为所有10000条目拖动相同的日期。然后在同一CSV中再次复制粘贴用户名,名字,姓氏和电子邮件ID,然后拖动下一个日期。 2.维护两个CSV文件,一个用于用户,一个用于日期。 Date.csv将有相同日期的10000个条目,而10001之后将包含下一个日期。
在这两个解决方案中,我将需要维护样本计数,因为我将需要从CSV中删除那些许多条目以供下次运行。
有人可以分享任何更好的选择来实现这一目标吗?
答案 0 :(得分:2)
如果您需要过去/未来的时间戳,请使用__time() function生成当前日期(或将其与__longSum() function合并)
默认情况下,__time()
函数返回自Unix epoch开始以来的当前时间(以毫秒为单位),但您可以使用SimpleDateFormat模式控制格式。
有关上述两个和其他JMeter函数的更多信息,请参阅How to Use JMeter Functions帖子系列
答案 1 :(得分:1)
您可以使用两个组件来解决此问题: -
步骤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
-a Jmeter变量可以在整个线程组中使用,一旦你使用partilculare POST采样器生成一个日期,就会为下一个请求生成一个新的日期。