在 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 文件中并循环 them.I 尝试使用 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

并且您正在使用 HTTP Request 采样器通过 POST 方法发送 JSON,您可以按如下方式进行:

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

    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. 填充采样器配置,如主机、端口、路径。 不要放入任何东西 "Parameters" 或 "Body Data"

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

有关 JMeter 中的 Beanshell 脚本的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 指南,以及一本包含一些流行的 Beanshell 脚本食谱的食谱。