繁体   English   中英

在JMeter的一个请求中从CSV文件发送完整的JSON数据

[英]Sending Complete JSON Data from the CSV file in one request in JMeter

我正在尝试在JMeter中发送JSON请求

{"responseProtocol":"PROTOCOL_JSON","requestProtocol":"PROTOCOL_JSON","codes":"164","122","123","161","149","158"]}

我没有对值进行硬编码,而是尝试将它们保存在CSV文件中并遍历它们。我尝试使用CSV数据集config进行循环,但是请求是以这种方式发送的

{"responseProtocol":"PROTOCOL_JSON","requestProtocol":"PROTOCOL_JSON", "codes":"164"}

{"responseProtocol":"PROTOCOL_JSON","requestProtocol":"PROTOCOL_JSON", "codes":"122"}

{"responseProtocol":"PROTOCOL_JSON","requestProtocol":"PROTOCOL_JSON", "codes":"123"}

它为每个请求发送一个代码,并在遍历文件末尾的同时发送多个请求。

有没有一种方法可以在单个请求中发送多个代码。

当前,JMeter不提供相关的测试元素,甚至不提供测试元素的组合来实现您的方案,因此您必须通过一些脚本来绕过JMeter的限制。

假设您的CSV文件如下所示:

164
122
123
161
149
158

而且您正在使用HTTP Request采样器通过POST方法发送JSON,您可以按照以下步骤进行操作:

  1. 添加一个Beanshell预处理器 作为 HTTP请求采样器的子代 ,该采样器应发送该JSON数据
  2. 将以下代码放入预处理器的“脚本”区域:

     StringBuilder requestBody = new StringBuilder(); requestBody.append("{\\"responseProtocol\\":\\"PROTOCOL_JSON\\",\\"requestProtocol\\":\\"PROTOCOL_JSON\\",\\"codes\\":["); BufferedReader reader = new BufferedReader(new FileReader(new File("/path/to/your/csv/file.csv"))); String line; while ((line = reader.readLine()) != null) { requestBody.append("\\"").append(line).append("\\"").append(","); } reader.close(); requestBody.append("]}"); sampler.setPostBodyRaw(true); sampler.addNonEncodedArgument("",requestBody.toString(),""); 
  3. /path/to/your/csv/file.csv替换为CSV文件的真实路径
  4. 填充采样器配置,例如主机,端口,路径。 不要在“参数”或“身体数据”中添加任何内容

应该是这样。 用1个线程运行test,并查看View Results Tree侦听器,以确保一切正常。

请参阅“ 如何使用BeanShell:JMeter的最喜欢的内置组件指南”,以获取有关JMeter中Beanshell脚本的更多信息以及一种包含一些流行Beanshell脚本食谱的食谱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM