我想知道,如何在groovy脚本中对a做出反应。我正在使用While控制器迭代CSV中的所有行,并在实际测试计划之前生成JMeter变量。对于不同的CSV文件,我需要多次执行此操作,因此我不想在While控制器中停止线程。
我想象了这样的事情:
if (${CSV_VALUE1} != "<EOF>")
{
def variableName = sprintf('%1$sVALUE',[${CSV_VALUE2}])
vars.put(variableName,${CSV_VALUE1});
}
CSV_VALUE1是JMeter变量的值,CSV_VALUE2是变量的名称。
测试计划
我也很欣赏更好的解决方案,它遍历CSV文件的每一行,并根据我的约定生成JMeter变量。一个限制是,它必须只在一个单个线程组中完成(=>在EOF上不停止线程)
您可以使用If控制器和While控制器组合来处理此
情况,如下所示:
${__javascript(“${CSV_VALUE1}”!=“
”,)}
“${CSV_VALUE1}”!=“
”
有关详细信息,请参见在JMeter文章中使用While控制器
您可以使用“BeanShell”读取“csv文件”,下面是示例csv文件,其数据如下
answer1,0
answer2,1
answer3,2
...
answerX,X-1
要阅读此文件,请使用下面的“BeanShell”脚本
import java.text.*;
import java.io.*;
import java.util.*;
String filename = "oprosnik_" + vars.get("fileNum") + ".csv";
ArrayList strList = new ArrayList();
try {
File file = new File(filename);
if (!file.exists()) {
throw new Exception ("ERROR: file " + filename + " not found");
}
BufferedReader bufRdr = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
String line = null;
Integer i = 0;
while((line = bufRdr.readLine()) != null) {
strList.add(line);
i++;
}
bufRdr.close();
counter = Integer.parseInt(vars.get("counter"));
if (counter != i) {
String[] variables = strList.get(counter).split(",");
vars.put("answer",variables[0]);
vars.put("answerNum",variables[1]);
counter++;
vars.put("counter",Integer.toString(counter));
}
else {
vars.put("answer","<EOF>");
vars.put("eol","<EOF>");
vars.put("counter","0");
}
}
catch (Exception ex) {
IsSuccess = false;
log.error(ex.getMessage());
System.err.println(ex.getMessage());
}
catch (Throwable thex) {
System.err.println(thex.getMessage());
}
For reference check以下链接
从JSR223采样器,我可以使用变量访问当前测试元素。 从那里,我如何导航< code>TestElement对象的树?例如,我如何访问父测试元素(然后它是父的,等等)或者我如何访问< code>TestPlan测试元素? 背景: 我想使用Groovy从JSR223采样器中动态创建一个JDBC连接配置元素。 从其他问题(例如,这里)和网络搜索(例如,这里),我知道如何自上而下地创建测试计划元素(例
我在jmeter中面临一个问题,我想知道我能否解决这个问题。我需要在远程计算机上运行一个脚本。当我在电脑上通过命令行运行脚本时,它正在工作。 我想在我的计算机上用Jmeter运行它(与脚本运行相同)。我尝试了ssh采样器,但没有成功。我想使用操作系统采样器。可以吗?我可以在远程计算机上运行脚本吗?我找到的唯一解释来自blazemeter网站,并提到:“同样,由于通过操作系统进程采样器运行“plin
我正在创建一个Jmeter docker容器。测试输入由CSV(数据集配置)驱动。我需要在脚本中设置什么文件名路径
我有一个包含CSV文件的目录。每个文件都包含我想用JMeter发出的GET请求列表。我想要做的是读取一个目录中的所有文件,然后循环通过每个CSV在JMeter中发送请求。文件的数量不一致,所以我不想将文件名硬编码到CSV采样器中。 因此,实际上,我希望读取目录中的所有文件,并将这些文件存储在一个数组变量中。循环遍历数组并将CSV文件发送给CSV采样器,然后CSV采样器读取CSV文件并将内容传递给H
你能建议如何用contains语法重写下面的动态名称代码吗?请参考所附的屏幕截图。多谢.
但是根据目前的需求,我们需要从mongodb中获取数据,将这些动态值传递给HTTP请求采样器,我的意思是我们需要根据数据库中的动态值构建HTTP请求采样器? 你能不能请谁帮我一下。