jMeter如何重新执行CSV数据集配置

jMeter如何重新执行CSV数据集配置,jmeter,Jmeter,使用jMeter设置浸泡/负载测试,该测试需要使用不同的数据运行每个请求。我目前的结构是 Thread Group (2 Users, 2 Loops) - Simple controller -- Java Sampler (Custom Plugin) to convert CSV Formula data into NewThreadData.csv (as variable) -- Java Sampler (Custom Plugin) to create directory of f

使用jMeter设置浸泡/负载测试,该测试需要使用不同的数据运行每个请求。我目前的结构是

Thread Group (2 Users, 2 Loops)
- Simple controller
-- Java Sampler (Custom Plugin) to convert CSV Formula data into NewThreadData.csv (as variable)
-- Java Sampler (Custom Plugin) to create directory of files created with NewThreadData.csv merged into a template
-- While Controller Condition - js NewThreadData column not = EOF
--- CSV Data Set Config NewThreadData.csv (Recycle False / Stop of EOF False) - filename passed as variable
--- JMS PUblisher with the FileName a variable using the filename column from within NewThreadData.csv
我的问题是在第二个循环中,数据在NewThreadData.csv中更新,但是while循环中的csv再也不会运行了

似乎CSV数据集配置“知道”它已运行,而与实际CSV数据无关

问题
  • 在这种情况下,如何获取要重新运行/重新执行的CSV数据集配置
  • 是否存在未记录的变量或使配置重新处理的方法
  • 有没有办法在每次迭代中产生一个新线程,而不是重用现有线程,因为CSV对每个“用户”[线程]执行一次。我也尝试过在EOF上停止:是的,但这停止了第二个循环
目标是最终增加用户数量和循环次数(变为永久);在每个循环中插入大约100种不同的数据组合。我使用的公式具有时间和线程数,可以为我提供数据唯一性以及从公式动态创建的其他数据。在EOF上循环是不可行的,因为我需要在每个循环上重新生成csv内容。我认为超级csv不适用于负载和浸泡场景


谢谢你的期待。Andrew

我认为不可能“重置”CSV数据集配置,因此,一旦它以当前状态读取文件,它将“坚持”其内容

如果您动态地操作文件内容,我建议您改为在运行时对其进行评估,因为它将在文件放置的位置进行评估,因此它不会保留文件,并在读取最后一行时“倒带”到文件的开头


更多信息:

CSV数据集配置元素将首先执行,并且仅执行一次,即使您已将其放置在while控制器中。因此,CSV数据集配置元素不适合您的要求


您可以使用JSSR223预处理器使用受支持的编程语言/脚本(Java,Groovy)处理动态CSV文件。

遗憾的是,尽管现有文件不能满足我的需要,但循环只是重复。不过还是要谢谢你。花了一段时间让它工作起来,再多挖一点;但这是可行的。最终创建了一个JSR223采样器,参数为
${{uu CSVRead(${path}/${uu threadNum}.genFile.csv,*GEN${uu threadNum}}
,然后采样器名称是
JSR223采样器-在-${uu CSVRead(*GEN${uu threadNum},6)}${uu CSVRead(*GEN threadNum列
-最后用循环控制器替换了while,其循环计数设置为
${{uu groovy(新文件(${path}/${{uu threadNum}.genFile.csv”).readLines().size()-1,)}
并用作文件名=
${path}/${uu CSVRead(*GEN${uu threadNum},6)}.json
谢谢您的帮助!实际上我更新得太快了。CSVReader没有重新打开(新)文件。需要一个close()或类似的东西…因此,发现
${uuuu CSVRead(*GEN${uuuu threadNum},6)}
一直在引用原始文件,忽略重新分配的别名。我使用别名创建和引用中线程组的循环计数为
${{uuuu CSVRead(${path}/${uuuu threadNum}.${uuuu jm_uuuuuidx}.genFile.csv,*GEN${uuuu threadNum}${uuu jm_uuuuidx}
。我怀疑,当我打开卷时,我可能会遇到内存或文件处理问题,但现在可以按要求工作了。