JMeter:CSV数据集配置;在每次测试迭代开始时读取行它到底应该如何工作?

JMeter:CSV数据集配置;在每次测试迭代开始时读取行它到底应该如何工作?,jmeter,Jmeter,我关心的是如何使用和设置JMeterJMeter规则 因为据说“在每次测试迭代开始时读取行”。起初,我认为这是关于线程的,然后我阅读了配置放在循环中的位置控制器,并且每次循环迭代都会读取行。我已经用now 5.1.1进行了测试,它可以正常工作。但若我把config放在测试计划的根目录下,那个么in将只在每个线程迭代中读取新行。我是否可以期望仅基于文档的这种行为,而不考虑尝试和错误?我看不到它是如何从csv配置元素上的scoping+exec order+文档流出来的。我错过什么了吗 我想知道为什

我关心的是如何使用和设置JMeter
JMeter
规则

因为据说“在每次测试迭代开始时读取行”。起初,我认为这是关于线程的,然后我阅读了配置放在
循环中的位置
控制器
,并且每次循环迭代都会读取行。我已经用now 5.1.1进行了测试,它可以正常工作。但若我把
config
放在测试计划的根目录下,那个么in将只在每个
线程
迭代中读取新行。我是否可以期望仅基于文档的这种行为,而不考虑尝试和错误?我看不到它是如何从
csv配置元素
上的
scoping
+
exec order
+文档流出来的。我错过什么了吗

我想知道为什么这样的实际行为是方便的,为什么功能是以这种方式实现的

另外,如何在测试开始时将一行cvs读取到VAR,然后停止运行该配置以节省CPU时间?在2.x版本中,有一个配置

  • 其中包含一个隐式:

    一旦事件发生,CSV中的下一行将立即被读取,无论其来源如何

  • 使用CSV数据集配置是安全的,因为它不会将整个文件保存在内存中,它只在前面提到的
    iterationStart()
    事件发生时读取下一行。然而,它保持着开放性。如果您确实有很多RAM,但没有足够的文件句柄,您可以在测试开始时使用以下代码将文件读入内存

    SampleResult.setIgnore()
    
    new File('/path/to/csv/file').readLines().eachWithIndex { line, index ->
        props.put('line_' + (index + 1), line)
    }  
    

    完成后,您将能够使用as
    ${{{{u p(line_1,)}
    引用第一行,使用as
    ${{u p(line_2,)}
    引用第二行