jmeter - 如何使用 groovy 从原始 csv 创建新的 csv

jmeter - how to creat new csv from original csv with groovy

我有一个这样的 csv 文件(带有 BOM 的 UTF-8)

NAME,F1,F2,
test1,field1,field2
test2,field1,field2
test3,field1,field2
test4,field1,field2
test5,field1,field2
test6,field1,field2

我想舍弃前三行并创建新的 csv(带 BOM 的 UTF-8)

NAME,F1,F2,
test4,field1,field2
test5,field1,field2
test6,field1,field2

我从 中得到了一些想法,并在 JSR223 PreProcessor

中对此进行了编码
def originalCsvFile = new File('g:/Workspace/1.csv')
def newCsvFile = new File('g:/Workspace/2.csv')


originalCsvFile.readLines().take(5).each {line ->
    newCsvFile.withWriter('UTF-8') { writer ->   
        writer.writeLine line
    }
  }

以上代码无效。 最好把新的csv路径放到变量里,我想在jmeter CSV Data Set Config

中获取变量

你意识到了吗:

  1. take(5) 函数 returns 5 first lines of the list
  2. newCsvFile.withWriter函数overwrites the file with the new data每次调用

所以我相信你正在寻找复制和粘贴这样的东西:

originalCsvFile.readLines().eachWithIndex { line, index ->
    if (index == 0 || index > 3) {
        newCsvFile.withWriterAppend('UTF-8') { writer ->
            writer.writeLine line
        }
    }
}

有关 JMeter 中 Groovy 脚本的更多信息:Apache Groovy - Why and How You Should Use It

也许没那么优雅,但我会这样做:

List li = originalCsvFile.readLines()
newCsvFile.append(li[0] + "\n", 'UTF-8') //headers
li[4..-1].each { newCsvFile.append(it + "\n", 'UTF-8') }