强制线程从 CSV 中获取特定值,并且在测试完成之前不会更改

Forcing thread to take a particular value from CSV and does not change till the test is completed

我有包含手机号码的 CSV 文件,例如number.csv

1276543281
1276543282
1276543283
1276543284
1276543285

已配置 CSV 数据集配置,具有以下选项

Recycle on EOF? : True
Stop Thread on EOF? : False
Sharing Mode: All Threads

线程组设置如下:

Number of Threads: 5
Ramp-up: 1
Loop Count: 10

现在,当我执行它时,线程从 CSV 中获取任意数字,并在基于线程完成的下一次迭代中从 CSV 中获取值。

我想强制线程 1 占据第一行,线程 2 占据第二行,依此类推...直到达到循环计数或达到持续时间。

您将无法使用 CSV 数据集配置实现所描述的行为,使用上述配置每个线程将在每次迭代时选取下一个值。

无法保证第一个线程将选择第一行,第二个线程将选择第二行。

如果您想将每个线程“粘贴”到 CSV 中的相应行,您应该使用 __groovy() function 而不是:

${__groovy(new File('/path/to/your/number.csv').readLines().get(ctx.getThreadNum()),)}

其中 ctx 代表 JMeterContext class instance, see Top 8 JMeter Java Classes You Should Be Using with Groovy 文章以获取更多信息。

您可以通过两种方式实现此解决方案

  1. 您可以通过在控制器中仅保留一次 CSV 数据集配置来实现
  2. 您可以通过宝录CSV数据集配置来实现,在您的场景中,将每个线程的块大小设置为1

在这两种情况下,在第一次迭代中选取的值将在下一次迭代中选取相同的值。