我已经编写了REST API,现在我的要求是使用JMeter的POST方法将多个JSON正文发送到API。我有一个带有四个值(1,2,3,4)的csv文件。在这四个文件中的每个文件中,我都有JSON正文。我用过:
步骤1)here
步骤2)${__FileToString(C:Path_to_csv_file/${__eval(${JSON_FILE})}.txt,,)}
但是从这里我只能访问第一个文件,即以一个命名的文件。如何将所有文件的正文发送到API? 非常感谢您的帮助。
答案 0 :(得分:0)
按以下方式在HTTP采样器中使用正文数据:
{__FileToString(${JSON_FILE},,)}
您必须将所有文件路径放入plan.csv
文件中。每行应该有一个文件路径。
示例:
假设您要在HTTP采样器中使用4个带有JSON正文的文件。
在您的CSV文件plan.csv
中提供这4个文件的文件路径。每行包含一个这样的文件路径:
/User/file/file1.json
/User/file/file2.json
/User/file/file3.json
/User/file/file4.json
现在,在您的CSV数据集配置中,使用包含所有文件路径的CSV文件的正确文件名,并为其指定一个变量名,例如JSON_FILE
。
现在,在您的身体数据中使用{__FileToString(${JSON_FILE},,)}
这一行。还要相应地使用循环计数值。
答案 1 :(得分:0)
您将无法使用CSV数据集配置,因为它将读取每个线程(虚拟用户)和/或Thread Group迭代的下一个值。
如果您要求一次发送所有文件正文,则可以采用另一种方法
将以下代码放入“脚本”区域:
def builder = new StringBuilder()
new File('/path/to/plans.csv').readLines().each { line ->
builder.append(new File(line).text).append(System.getProperty('line.separator'))
}
sampler.getArguments().removeAllArguments()
sampler.addNonEncodedArgument('', builder.toString(), '')
sampler.setPostBodyRaw(true)
上面的代码遍历plans.csv
文件中的条目,将文件内容读入字符串并将它们完全串联在一起。完成后,它将HTTP请求采样器主体数据设置为生成的累积字符串。
请查看The Groovy Templates Cheat Sheet for JMeter,以了解更多信息以及使用JMeter中的Groovy脚本可以实现什么。