关于apache:JMeter CSV Dataset Config:如何在同一个线程中移动变量?

JMeter CSV Dataset Config: how to move through variables in the same thread?

我正在使用 CSV 数据集配置元素,该元素正在从如下文件中读取:

1
2
3
4
5
6
abd
sds
ase
sdd
ssd
cvv

基本上是由3个字母组成的随机字符串。

我将它们分配给一个名为 ${random_3}.

的变量

现在,我想在同一个线程中多次使用此列表中的值,但每次我都想移动到下一个。例如,我希望第一个采样器使用 abd,第二个采样器使用 sds,然后是 ase,等等。但是如果我只使用 ${random_3},那么无论在哪里都只使用第一个采样器 (abd)\\所指。有没有一种方法可以指定循环遍历线程中 CSV 数据集的值?


CSV 数据集配置适用于此。所有值都需要在文件的一列中,并按照描述将它们分配给变量。

创建一个线程组,该线程组为您想要迭代文件的尽可能多的用户提供尽可能多的线程(即作用于 HTTP 请求)。假设有 1 个用户,设置线程数为 1,循环计数为 1。

在线程组中,您需要添加一个循环控制器或一个While 控制器。您表示要遍历整个数据集。如果您添加一个循环控制器,您需要将循环计数设置为 6,因为您有 6 个值,每个值一个。或者(更容易处理整个文件)添加一个 While 控制器而不是循环控制器,并将 ${random_3} 设置为 while 条件。

正确设置 EOF 上的 CSV 数据集回收和 EOF 值上的停止线程非常重要。如果您计划多次迭代文件,则必须将"在 EOF 上回收"设置为 True(即指示 jMeter 移回 CSV 文件的顶部)。如果您使用的是循环控制器,请将"在 EOF 上停止线程"设置为 False,如果您使用的是 while 控制器并希望在读取整个 csv 数据集后停止,则设置为 true。

将 CSV 数据集配置与 HTTP 请求一起添加为控制器的子项。使用您要使用的任何侦听器查看结果。


CSV 数据集仅在每个线程迭代开始时才在文件中移动。

您可以使用原始数据源预处理器通过每个请求移动文件,这就是您的解决方案。


更新:

CSV 数据集似乎也不适合此目的。

我最终创建了一些简单的 beanshell 脚本,它们根据需要创建一个随机的 1、2 或 3 个字母的单词,以及另一个从大量集合中读取随机单词的脚本。这样,每次调用它们时,它们都会给出一个随机值。它们的名称如下:

1
${__BeanShell(getRandomStr(3))}

1
${__BeanShell(getRandomWord())

请注意,您需要在同一列中包含给定变量名称的值。

Doing: abd sds ase sdd ssd cvv

非常不同

1
2
3
4
5
6
abd
sds
ase
sdd
ssd
cvv

第一个有 6 个变量,每个变量都有一个值;第二个有一个具有 6 个值的变量。