从JMeter中具有动态名称的文件中读取字符串

从JMeter中具有动态名称的文件中读取字符串,jmeter,Jmeter,我的测试计划包含一个如下所示的线程组: 仅一次控制器:登录到应用程序 CSV数据集配置:用于登录到应用程序的信息 仅一次控制器 HTTP请求:登录后信息 回路控制器(10次) HTTP请求:POST向“问题”添加“评论” 我的CSV数据集包含以下字段: 用户名 密码 组id 用户有权访问一个问题,这取决于它的组id。我想在每个线程中为不同的问题添加10条注释 我的想法是构建一个像questions\u by_group${group{u id}.txt这样的文件,其中包含${

我的测试计划包含一个如下所示的线程组:

  • 仅一次控制器:登录到应用程序
    • CSV数据集配置:用于登录到应用程序的信息
    • 仅一次控制器
      • HTTP请求:登录后信息
    • 回路控制器(10次)
      • HTTP请求:POST向“问题”添加“评论”
我的CSV数据集包含以下字段:

  • 用户名
  • 密码
  • 组id
用户有权访问一个问题,这取决于它的组id。我想在每个线程中为不同的问题添加10条注释

我的想法是构建一个像
questions\u by_group${group{u id}.txt
这样的文件,其中包含
${group{u id}
可以访问的一些问题id。然后我可以在POST参数值中执行
${uuuuu StringToFile(questions\u by_ugroup.{group\u id}.txt)}
来添加注释。使用
\uuu StringToFile
函数应该在每次调用时遍历我的文件行。这样,我可以对许多不同的问题添加许多评论

问题是JMeter似乎只打开一次文件,并为每个线程共享它(尽管我知道
${group_id}
会为每个线程更改)

我试过很多东西,比如


但是什么都不起作用。

默认情况下,StringFromFile是这样工作的,请阅读:

您可以这样组织您的csv:

  • 用户名、密码、组id、commentID1、commentID2
然后将CSV数据集配置置于一次性控制器之前

例如,将共享模式设置为所有线程

最后,只需使用变量,而不是使用_StringFromFile

这不是最好的解决方案,因为您必须构建此文件并重复组id

另一种选择是,如果您的群组数量不是很大,可以在以下时间内完成:

  • 读取包含以下内容的CSV文件:

      groupID1, IDA1, IDA2,....
      groupID2, IDB1, IDB2,....
      ...
    
  • 为每个组设置一个属性,或在Beanshell采样器中调用此属性:

    JMeterUtils.setProperty(propertyName, propertyValue);
    
然后在控制器中,使用Beanshell采样器获取ID,使用:

    JMeterUtils.getProperty(propertyName);

我必须说我讨厌所有这些解决方案:-)

问题是:我想对许多问题添加许多评论。并非所有用户都可以访问问题。文件包含按组\ id列出的问题id。当我在POST参数值中使用\ U StringToFile时,它只使用它打开的第一个文件。我建议您在jmeter用户邮件列表中提问,也许有人比我有更好的想法。您测试了我的选项吗?有什么反馈吗?谢谢,我没有测试你的选择,因为我有很多问题(50到100个),我认为你的解决方案无法“扩展”到我的需要。另外,我想在每个循环中迭代问题,所以我真的不知道如何在解决方案中维护列号计数器。因为我懒惰,我决定每个用户只使用一个问题,并将其放入CSV。无论如何谢谢你!