我正在使用CSV数据集配置元素,该元素正在读取如下文件:
abd
sds
ase
sdd
ssd
cvv
其中,基本上有3个字母随机字符串。
我将它们分配给名为${random_3}
的变量。
现在,我想在同一个线程中多次使用此列表中的值,但每次我想移到下一个。例如,我希望第一个采样器使用abd
,第二采样器使用sds
,然后使用ase
等。但是,如果我只使用${random_3}
,那么只使用第一个采样器(abd)用于所指的任何地方。有没有办法指定在循环中循环CSV数据集中的值?
答案 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())