我的测试计划包含一个看起来像这样的线程组:
我的CSV数据集包含以下字段:
用户可以根据其group_id访问问题。我想在每个帖子中为不同的问题添加10条评论。
我的想法是构建一个像questions_by_group_${group_id}.txt
这样的文件,其中包含${group_id}
可以访问的一些问题ID。然后我可以在POST参数值中${__StringToFile(questions_by_group_${group_id}.txt)}
添加注释。使用__StringToFile
函数应该在每次调用时遍历我的文件行。这样我就可以在很多不同的问题上添加很多评论。
问题是JMeter似乎打开了一次文件并为每个线程共享它(甚至认为我知道每个线程的${group_id}
都会发生变化。
我尝试过很多像
这样的事情${__StringFromFile(questions_by_group_${group_id}.txt)}
${__StringFromFile(${__eval(questions_by_group_${group_id}.txt)})}
${__eval(${__StringFromFile(${__eval(questions_by_group_${group_id}.txt)})})}
但没有任何作用。
答案 0 :(得分:0)
StringFromFile默认以这种方式工作,读取:
你可以这样组织你的csv:
然后将CSV数据集配置放在Once Only Controller之前。
例如,将共享模式设置为所有线程。
最后只使用变量而不是使用__StringFromFile。
这不是最佳解决方案,因为您必须构建此文件并重复group_id ID。
另一种选择,如果您的群组数量不是很大,那么将在setUp Thread Group中执行此操作:
阅读包含以下内容的CSV文件:
groupID1, IDA1, IDA2,....
groupID2, IDB1, IDB2,....
...
为每个组__setProperty设置一个属性或在Beanshell Sampler中调用它:
JMeterUtils.setProperty(propertyName, propertyValue);
然后在您的控制器中,使用Beanshell采样器来使用以下内容获取ID:
JMeterUtils.getProperty(propertyName);
我必须说我讨厌所有这些解决方案:-)