JMeter CSV数据集配置:如何在同一个线程中移动变量?

时间:2011-09-06 09:46:41

标签: apache csv random dataset jmeter

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

abd
sds
ase
sdd
ssd
cvv

其中,基本上有3个字母随机字符串。

我将它们分配给名为${random_3}的变量。

现在,我想在同一个线程中多次使用此列表中的值,但每次我想移到下一个。例如,我希望第一个采样器使用abd,第二采样器使用sds,然后使用ase等。但是,如果我只使用${random_3},那么只使用第一个采样器(abd)用于所指的任何地方。有没有办法指定在循环中循环CSV数据集中的值?

4 个答案:

答案 0 :(得分:32)

CSV数据集配置可以正常使用。所有值都需要位于文件的一列中,并按照描述将它们分配给变量。

创建一个线程组,其中包含尽可能多的用户迭代文件(即作用于HTTP请求)的线程数。假设有1个用户,将线程数设置为1,循环计数为1。

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

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

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

答案 1 :(得分:2)

只有在每次线程迭代开始时,CSV数据集才会在文件中移动。

您可以使用Raw Data Source PreProcessor为每个请求移动文件,这是您的解决方案。

答案 2 :(得分:1)

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

执行:abd sds ase sdd ssd cvv

非常不同
abd 
sds 
ase 
sdd 
ssd 
cvv

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

答案 3 :(得分:1)

更新

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

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

${__BeanShell(getRandomStr(3))}

${__BeanShell(getRandomWord())