我需要在迭代中动态生成XML或JSON,其中XML或JSON具有可变数量的元素 - 例如,它可以是书籍。书籍的价值来自CSV文件。
我创建了一个CSV数据配置,指向带有名为csvBook的变量的CSV文件。
接下来,在BeanShell Sampler中,我调用
StringBuffer sb = new StringBuffer("<Order><Books>");
Random rv = new Random();
int size = rv.nextInt(100);
for (int i = 0; i < size; i++) {
sb.append("<Book Name=" + vars.get("csvBook") + "/>");
}
sb.append("</Books></Order>");
问题是当我在一次迭代中运行循环时,我不知道如何从CSV文件中获取新值。 vars.get(“csvBook”)在同一次迭代中返回相同的值。
是否有命令告诉JMeter获取下一个CSV值(下一行)(同样,在一次迭代中)?
提前致谢。
答案 0 :(得分:0)
考虑切换到JSR223 Sampler和Groovy语言:
相关的Groovy代码如下:
import groovy.xml.StreamingMarkupBuilder
def csvFile = new File('/path/to/csv/file')
def payload = {
order {
books {
csvFile.readLines().each {line ->
book (name:line)
}
}
}
}
def xmlFile = new File('/path/to/xml/file')
def writer = xmlFile.newWriter()
def builder = new StreamingMarkupBuilder()
def writable = builder.bind payload
writable.writeTo(writer)