我有一个 CSV 数据集配置,我在 while 循环中使用它。我在一个模块中有这个,并在我的测试中多次使用这个相同的模块。
我的第一个问题是我用这个条件设置了 while 循环:
${__javaScript("${data}"!="<EOF>")}
Run Code Online (Sandbox Code Playgroud)
“数据”是我的 csv 文件中的第一列。这工作正常,除了最后一次迭代 ${data} 被设置为“EOF”并对其执行所有测试。我希望它在此之前停止,而不是在所有测试都运行一次之后。
我的另一个问题是,当我稍后再次使用此模块时,${data} 仍设置为“EOF”并且根本不运行任何测试。
为了避免这<EOF>一点,只需将您的逻辑放在If Controller 下并"${data}" != "<EOF>"用作“条件”
有关此用例和其他常见用例的详细说明,请参阅在 JMeter 中使用 While 控制器指南。
更新。重用相同的 CSV 文件:
在第一个 While Controller 之后和第二个 While Controller 之前添加一个Beanshell Sampler,并在“脚本”区域使用以下代码:
import org.apache.jmeter.services.FileServer;
FileServer.getFileServer().closeFile("yourfile.csv");
vars.put("data", "");
Run Code Online (Sandbox Code Playgroud)
上面的脚本将“关闭”原始 CSV 文件,以便稍后在脚本中重新使用它,并“清除”${data}变量,因为它包含<EOF>值。
有关在 JMeter 测试中使用 Beanshell 脚本的详细信息,请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件指南。