【问题标题】:how to use separate csv file for each thread如何为每个线程使用单独的 csv 文件
【发布时间】:2014-01-23 18:06:48
【问题描述】:

我的情况是这样的, 1.多用户登录(100个用户) 2. 根据用户特定的 id 选择 50 个项目

我已将每个用户的 ID 放在单独的 csv 文件中,例如 user1.csv、user2.csv、user3.csv 等等。

我的结果应该是线程 1 应该使用 user1.csv 并在循环控制器中处理所有 50 个 id。 线程 2 应该使用 user2.csv 等等。

我尝试了以下示例,但仍然找不到解决方案。

例如。我使用的文件路径为 C:\abc\user${_threadNum}.csv

或者

C:\abc\user${_threadNum}.csv

csv 文件中的变量名是 user_id

Requeat 看起来像 /home/abc/${user_id}

我希望线程 1 使用 user1.csv 文件并替换请求中 user_id 的值,线程 2 应该使用 user2.csv 等等。

如果我执行我的上述计划,我会收到错误为 /home/abc/EOF

这在 JMeter 中怎么可能?还是有其他方法?

由于我是 JMeter 新手,请提供一个示例解决方案。

【问题讨论】:

标签: jmeter


【解决方案1】:

创建您的文件,例如 comman_name_1,comman_name_2,comman_name_3 等并从 csv 数据配置集中的下拉列表中选择当前线程选项。这将允许线程在每个线程中使用不同的文件或将值放在单个文件中并选择当前线程选项。

【讨论】:

  • 嗨,根据你的建议,我已经创建了我的 csv 文件。在 csv 数据配置集中,我还选择了当前线程选项。但是文件名应该是什么?如果我有 5 个 csv 文件,我是否需要创建 5 个具有相同变量名的单独 csv 数据集配置?如果单个 csv 数据集就足够了,那么文件名应该是什么?每个线程将如何获取单独的 csv 文件?
  • 我将逐步编写,1. 创建 5 个文件,如 file1、file2、file3 等。 2. 在您的脚本中创建 2 个 csv 数据配置 1 用于将在您的案例中登录的实际用户,2 用于您将测试的 50 个 ID 3. 在第一个数据配置文件(输入文件)中,用户名将出现 4. 在第二个数据配置中,将文件名写入文件 ${counter}(检查语法)并将模式设置为当前线程(此将为第一个用户访问 file1,为第二个用户访问 file2,依此类推) 5. 要使用 $counter,您必须从 1-5 开始在您的测试计划中使用 counter 我希望您能得到这个:)
  • 感谢您的明确解释.. 我会试试这个.. 我还需要澄清一下.. 而不是 ${counter},我尝试使用 ${_threadNum}(检查我的问题)。但我收到 EOF 错误。是否可以使用 ${_threadNum} 代替计数器?在此先感谢:)
  • 嗨,我试过你的选择。但是我得到的是 EOF 错误而不是文件名。你能建议什么可以解决吗?
  • 我也获得了与所有列的 CSV 数据相同的 EOF。如何更进一步?有人可以帮忙吗。
【解决方案2】:

这很简单,只需将CSV Data Set Config 添加到每个线程(线程1 的user1.csv 等等)。配置 CSV 数据集配置,并在共享模式字段中选择以下值之一:

  • 当前线程组 - 每个文件为每个线程组打开一次 元素出现的位置
  • 当前线程 - 为每个线程单独打开每个文件

UPD:我现在已经完成了,它有效

脚本如下所示:

我在每个 CSV 数据集配置中选择了“当前线程”

【讨论】:

  • 嗨,杰伊,我尝试了您的选择,但仍然所有线程都引用 user1.csv。你能举个例子解释一下吗?
  • 你使用了不同的线程组。但我想要同一个线程组中的所有内容。请查看我更新的问题
  • 根据你的脚本,如果我想为 100 个用户执行,我需要创建 100 个线程组吗?如果您不清楚我的问题,请告诉我。如果是这样,我将尝试详细解释。在此先感谢杰
  • 哦,现在我明白了……其中一个决定是将您的脚本分成一些线程组。如果您想要 100 个用户,您可以在每个线程组中的“线程数(用户)”字段中进行配置。
  • 100 个用户应该使用不同的 csv。如果我提供的线程数为 100,则所有线程都引用同一个 csv,即duck.csv ...我的逻辑很简单,有 100 个 csv 文件,而 100 个用户(tard)应该只使用 1 个 csv 文件,正如我在我的问题。接下来,每个 csv 文件中都会有 50 个唯一的 id。请求应在循环控制器中分别处理每个 id。
【解决方案3】:

我在获取线程数时犯了使用单下划线的错误。 我们需要像这样使用双下划线:${__threadNum} 注意:

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 2011-10-20
    • 2020-01-11
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多