如何在Jmeter中循环时从CSV更改一个变量值
我有一个CSV(Users.CSV),其中包含10000个用户名、姓氏、姓氏和唯一的电子邮件ID。在我的测试计划中的一个POST请求中,我需要通过日期。对于同一日期,我只能发布一次数据。如何使用CSV或任何其他方式处理此问题 我可以想出两个选择: 1.拖动相同Users.CSV中所有10000个条目的相同日期。然后在同一CSV中再次复制粘贴用户名、姓氏、姓氏和电子邮件ID,然后拖动下一个日期。 2.维护两个CSV文件,一个用于用户,一个用于日期。Date.csv将有10000个相同日期的条目,10001之后将包含下一个日期 在这两种解决方案中,我都需要保持样本计数,因为我需要在下次运行时从CSV中删除这些条目 有人能分享更好的选择来实现这一点吗 用于生成当前日期(如果需要过去/未来的时间戳,可将其与当前日期组合使用) 默认情况下,如何在Jmeter中循环时从CSV更改一个变量值,jmeter,Jmeter,我有一个CSV(Users.CSV),其中包含10000个用户名、姓氏、姓氏和唯一的电子邮件ID。在我的测试计划中的一个POST请求中,我需要通过日期。对于同一日期,我只能发布一次数据。如何使用CSV或任何其他方式处理此问题 我可以想出两个选择: 1.拖动相同Users.CSV中所有10000个条目的相同日期。然后在同一CSV中再次复制粘贴用户名、姓氏、姓氏和电子邮件ID,然后拖动下一个日期。 2.维护两个CSV文件,一个用于用户,一个用于日期。Date.csv将有10000个相同日期的条目,1
\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采样器生成日期,将为下一个请求生成一个新的日期。感谢您的解决方案。我能解决我的问题。谢谢你的解决方案。我能够解决我的问题。