我的要求是使用JMeter中的POST方法将多个JSON主体发送(一次发送所有文件主体)到API。
1.我有一个CSV文件,所有文件路径都在json_test_plan.csv文件中。在四个文件中,我都有JSON主体。
在每一行中,我都提到了一个包含JSON主体的文件路径。
D:\jmeter_tests\plan1.json
D:\jmeter_tests\plan2.json
D:\jmeter_tests\plan3.json
D:\jmeter_tests\plan4.json
1.使用Body数据创建了一个HTTP请求采样器,如下所示:{__FileToString(${JSON},,)}
1.添加了JSR 223预处理器作为HTTP请求采样器的子级,我使用它来发送JSON输入
将以下代码放入脚本区域
new File("D:/jmeter_tests/json_test_plan.csv").readLines().each { line ->
def builder = new StringBuilder()
builder.append(new File(line).text).append(System.getProperty('line.separator'))
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', builder.toString(), '')
sampler.setPostBodyRaw(true)
}
1.添加了一个http头管理器,添加了content-type和application/json分别作为Name和Value字段的值
1.添加了CSV数据集配置,提及CSV数据源“D:/jmeter_tests/json_test_plan.csv”
现在的问题是,每次我运行一个jmeter测试,上面只是读取CSV文件“D:\jmeter_tests\plan4.json”的最后一行(行),并给出所需的输出。我认为代码中有一些索引问题。有人能帮我读取CSV文件中的每一行/行并进行处理吗?谢谢
1条答案
按热度按时间yrefmtwq1#
发生这种情况是因为你对每个文件都调用了
sampler.getArguments().removeAllArguments()
。只要删除它,你的代码就应该开始工作了。您还可以考虑增强它以使用Arguments类
有关JMeter中的Groovy脚本的更多信息:Apache Groovy: What Is Groovy Used For?