在 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,您可以按如下方式进行:
- 添加一个 Beanshell Preprocessor 作为 HTTP 请求采样器的子项 ,它应该发送 JSON 数据
将以下代码放入预处理器的"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(),"");
- 将
/path/to/your/csv/file.csv
替换为您的 CSV 文件的真实路径
- 填充采样器配置,如主机、端口、路径。 不要放入任何东西
"Parameters" 或 "Body Data"
应该是这样。 运行 使用 1 个线程进行测试并查看 View Results Tree 侦听器以确保一切正常。
有关 JMeter 中的 Beanshell 脚本的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 指南,以及一本包含一些流行的 Beanshell 脚本食谱的食谱。
我正在尝试在 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,您可以按如下方式进行:
- 添加一个 Beanshell Preprocessor 作为 HTTP 请求采样器的子项 ,它应该发送 JSON 数据
将以下代码放入预处理器的"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(),"");
- 将
/path/to/your/csv/file.csv
替换为您的 CSV 文件的真实路径 - 填充采样器配置,如主机、端口、路径。 不要放入任何东西 "Parameters" 或 "Body Data"
应该是这样。 运行 使用 1 个线程进行测试并查看 View Results Tree 侦听器以确保一切正常。
有关 JMeter 中的 Beanshell 脚本的更多信息,请参阅 How to Use BeanShell: JMeter's Favorite Built-in Component 指南,以及一本包含一些流行的 Beanshell 脚本食谱的食谱。