在Apache JMeter中使用不同的起始索引遍历CSV数据集配置

时间:2019-06-20 07:08:03

标签: apache loops jmeter

我的要求是使用不同的起始索引遍历Apache JMeter中的CSV数据集配置。让我们假设我今天已经在JMeter中开始了一个测试计划,并且我的CSV文件有8个变量。我的采样器第一次从第一行运行到第八行。下次我将开始运行测试计划时,我希望采样器从2nd index到8th index中选择值。这样,我想使用CSV数据集配置遍历CSV文件。

我能够使用setUp ThreadGroup和tearDown Thread组为Apache JMeter中运行的每个测试初始化​​一个计数器。我可以在JMeter中使用_P(count)提取相同的内容。

在setUp Thread组中,我包含了JSR 223 Sampler并编写了类似

的脚本。
def file = new File('number')
if (!file.exists() || !file.canRead()) {
    number = '1'
}
else {
    number = file.text
}
props.put('number', number as String)

在tearDown线程组中,JSR223采样器具有类似

的脚本。
def number = props.get('number') as int
number++
new File('number').text = number

我想通过属性文件用计数器循环遍历我的CSV数据集配置文件(每次测试运行都会递增1)

1 个答案:

答案 0 :(得分:0)

请检查以下计划:-

enter image description here

输入CSV示例:-

enter image description here

如果Controller具有以下代码:-

${__groovy(vars.get('Used').take(1)!='Y')}

在JSR223后处理器中,我有以下代码:-

def inputFile = new File("C:\\Path\\toFile\\Excel\\OutputCSV.csv")
def lines = inputFile.readLines()
boolean isWrite = false;

lines.each { String line ->
    if(line.contains('Used'))
    {
        inputFile.write(line + '\n')
    }
    else
    {
        if(line.startsWith('Y'))
        {
            inputFile.append(line + '\n')
        }
        else if (!isWrite)
        {
            inputFile.append('Y' + line + '\n')
            isWrite = true;
        }
        else
        {
            inputFile.append(line + '\n')
        }

    }
} 

首次运行输出:- enter image description here enter image description here

第二次运行输出:- enter image description here enter image description here

如您所见,在第一次运行样品1中执行4次,在第二次样品中执行3次。 这不是最好或最好的代码,请先尝试。 请检查是否有帮助。