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

在JMeter中的一个请求中从CSV文件发送完整的JSON数据,json,csv,request,jmeter,Json,Csv,Request,Jmeter,我正试图在JMeter中发送一个JSON请求 {“responseProtocol”:“PROTOCOL_JSON”,“requestProtocol”:“PROTOCOL_JSON”,“code”:“164”,“122”,“123”,“161”,“149”,“158”} 我没有硬编码这些值,而是尝试将它们保存在CSV文件中并循环使用。我尝试使用CSV数据集配置进行循环,但请求是以这种方式发送的 {"responseProtocol":"PROTOCOL_JSON","requestProtoc

我正试图在JMeter中发送一个JSON请求

{“responseProtocol”:“PROTOCOL_JSON”,“requestProtocol”:“PROTOCOL_JSON”,“code”:“164”,“122”,“123”,“161”,“149”,“158”}

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

{"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
如果您使用sampler通过POST方法发送JSON,您可以按如下方式执行:

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

  • 用csv文件的实际路径替换
    /path/to/your/csv/file.csv
  • 填充采样器配置,如主机、端口、路径不要将任何东西放入 “参数”或“身体数据”
  • 应该是这样。使用1个线程运行测试,并查看侦听器,以确保一切正常


    有关JMeter中Beanshell脚本的更多信息,请参阅指南,以及一本包含一些流行Beanshell脚本食谱的烹饪书。

    在仔细阅读手册并尝试脚本后,它成功了。
    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(),"");