我已经探索并尝试了Google或StackOverflow上提到的解决方案,但无法解决我的问题。
我试图迭代CSV的每一行,并使用“HTTP采样器”中一行的每一列。
这是我到目前为止所尝试的。
我的测试计划结构
这是我的CSV文件
import java.text.*;
import java.io.*;
String filename = "load_test_date.csv";
ArrayList strList = new ArrayList();
try{
log.info("starting bean shell");
File file = new File(filename);
if(!file.exists()){
throw new Exception ("ERROR: file " + filename + " not found");
}
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line = null;
log.info("while loop starting");
headerLine = br.readLine();
while((line = br.readLine())!=null){
log.info(line);
String[] variables = line.split(",");
props.put("header_1",variables[0]);
props.put("header_2",variables[1]);
props.put("header_3",variables[2]);
props.put("header_4",variables[3]);
props.put("header_5",variables[4]);
}
}catch(Exception ex){
log.error(ex.getMessage());
}
虽然循环执行了两次(而不是csv文件中的三行执行了三次),并且总是使用最后一行值
,但我也使用了ForEach控制器,但无法产生所需的结果
>
其次,如果我正确地理解了您的观点,并且您希望迭代所有的值,即从1到15,您需要不同的方法,例如将整个文件读入内存,用逗号拆分每一行,并为每个“单元格”值创建一个JMeter变量,示例Groovy代码如下所示:
SampleResult.setIgnore()
def lines = new File('load_test_date.csv').readLines()
def counter = 1
1.upto(lines.size() - 1, { index ->
def line = lines.get(index)
line.split(',').each { column ->
vars.put('value_' + counter, column)
counter++
}
})
如果执行该脚本并查看调试采样器输出,您将看到以下JMeter变量
为了迭代生成的变量,您可以使用ForEach控制器,配置如下:
null 有什么主意吗?我该怎么做?我知道我不能只使用Once Controller,因为每个请求也是由每个线程执行的。
我创建了一个定制的jmeter java采样器,它在循环中向HTTPendpoint发送请求并解析响应。希望多个线程在单个线程组中运行此采样器。 有人建议,我可以在安装线程组中使用beanshell采样器从csv读取,创建hashmap并使用之类的内容将其存储在JMeter属性中。有人能告诉我这是否是一个合理的方法吗?如果是,我如何访问自定义采样器中的特定JMeter属性? 我找到了这个答案:使用
我在jmeter中有一个测试计划,只有很少的SOAP采样器,我在那里追加请求体计数器值,我正在寻找如何在每个采样器请求之前增加计数器值的方法。 在下面的设置中,jmeter按以下顺序执行请求: 我想实现这样的行为: 计数器起始值:1增量:1最大值:2 我该怎么做呢?我想我应该引入循环控制器?
嗨,伙计们,我把这个作为面试问题来回答,但我遇到了麻烦。我熟悉泛型/集合 问题是:所提供的工作区中包含cocI,它是一个类的开始,该类实现了一个迭代器,可用于迭代集合集合。集合集合被传递到类的构造函数中。迭代器应该首先遍历内容深度。 例如,如果集合集合如下所示: 然后迭代器应按以下顺序返回内容:“A”、“B”、“C”、“D”、“E”、“F” Q.在cocI中提供hasNext()和next()方法
测试结构: Thread1-Sampler1(例如:访问登录表单) 我试着把计时器当作取样器,不管是父母还是孩子。也许我错过了什么,因为没有一个计时器在为我工作。 我已经找到了类似的问题解决方案,但没有一个对我有用:JMeter——在多个线程组之间共享请求之间的延迟Ultimate thread Group中每个线程的延迟
但是根据目前的需求,我们需要从mongodb中获取数据,将这些动态值传递给HTTP请求采样器,我的意思是我们需要根据数据库中的动态值构建HTTP请求采样器? 你能不能请谁帮我一下。