我正在测试具有“加载文档”功能的服务。我需要发送一个包含每个请求的唯一文档。在HTTP请求采样器配置菜单中,我看到我可以发送文档以及我的请求。但是,我不知道如何在每次请求时发送不同的文档。有没有办法让JMeter稍微修改文档,生成指定的文档,甚至可能选择一系列外部生成的文档来提交请求?
答案 0 :(得分:4)
您可以使用While Controller下的CSV数据集配置来循环读取和发送预先创建的测试文档名称。
这看起来像是:
<强>详细说明:强>
${__javaScript("${testFile}"!="<EOF>",)}
- 读取列表直到文件结尾
生成测试文件列表的BeanShell Sampler代码:
import java.text.*;
import java.io.*;
import java.util.*;
String [] params = Parameters.split(",");
String contentList = params[0];
String testDataDir = params[1];
File dir = new File(System.getProperty("user.dir") + File.separator + testDataDir);
BufferedWriter out = null;
try {
if (!dir.exists()) {
throw new Exception ("Directory " + dir.getName() + " not found.");
}
File contentFile = new File(System.getProperty("user.dir") + File.separator + contentList);
if (contentFile.exists()) {
contentFile.delete();
}
FileWriter fw = new FileWriter(contentFile, true);
out = new BufferedWriter(fw);
System.out.println("\n--------------------------------------------------------------------------------------");
System.out.println("CONTENT LIST:\n");
if ((dir.exists()) && (dir.listFiles() != null) && (out != null)) {
for (File f : dir.listFiles()) {
if (contentFile.length() == 0) {
out.write(f.getName());
} else {
out.write("\n" + f.getName());
}
out.flush();
System.out.println("Content " + f.getName() + " added to " + contentFile.getName() + ".");
}
}
System.out.println("--------------------------------------------------------------------------------------\n");
}
catch (Exception ex) {
IsSuccess = false;
log.error(ex.getMessage());
System.err.println(ex.getMessage());
}
catch (Throwable thex) {
System.err.println(thex.getMessage());
}
finally {
out.close();
}