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个字母组成的随机字符串。
我将它们分配给一个名为
的变量
现在,我想在同一个线程中多次使用此列表中的值,但每次我都想移动到下一个。例如,我希望第一个采样器使用
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:
非常不同
1 2 3 4 5 6 | abd sds ase sdd ssd cvv |
第一个有 6 个变量,每个变量都有一个值;第二个有一个具有 6 个值的变量。