Jmeter脚本上载文件夹中的所有文件?

Jmeter脚本上载文件夹中的所有文件?,jmeter,Jmeter,我正在尝试使用Jmeter测试API 此API将单个文件作为参数,并将其上载到我的应用程序 现在我有一个文件夹,其中包含1000个这样的文件 如何在Jmeter中编写一个脚本,从文件夹中拾取一个文件,然后发送一个请求(即每个文件一个请求),并对文件夹中的所有文件继续执行此操作?要使Jmeter上载所有文件: 首先创建一个包含文件名的CSV文件 然后将a与2列一起使用: -1将包含文件的路径,假设您将其命名为pathToFile -1将包含文件的mime类型,假设您将其命名为mimeType

我正在尝试使用Jmeter测试API

此API将单个文件作为参数,并将其上载到我的应用程序

现在我有一个文件夹,其中包含1000个这样的文件


如何在Jmeter中编写一个脚本,从文件夹中拾取一个文件,然后发送一个请求(即每个文件一个请求),并对文件夹中的所有文件继续执行此操作?

要使Jmeter上载所有文件:

首先创建一个包含文件名的CSV文件

然后将a与2列一起使用: -1将包含文件的路径,假设您将其命名为pathToFile -1将包含文件的mime类型,假设您将其命名为mimeType

然后在您的中,选择“文件上载”选项卡并使用变量:

注意:您必须更改:

  • 表中的paramName与表单中的内容相匹配
  • 匹配URL后缀的路径
  • 主人
  • 端口(如果与HTTP的80和HTTPS的443不同)

要使JMeter上载所有文件:

首先创建一个包含文件名的CSV文件

然后将a与2列一起使用: -1将包含文件的路径,假设您将其命名为pathToFile -1将包含文件的mime类型,假设您将其命名为mimeType

然后在您的中,选择“文件上载”选项卡并使用变量:

注意:您必须更改:

  • 表中的paramName与表单中的内容相匹配
  • 匹配URL后缀的路径
  • 主人
  • 端口(如果与HTTP的80和HTTPS的443不同)

我认为这可以通过使用此处提供的解决方案来解决:

并将文件名保持为:

abc-${counter}.png

其中,
计数器
是一个计数器变量,它随每个请求而递增。
此外,文件夹中的文件也类似于abc-1.png abc-2.png等。

我认为这可以通过使用此处提供的解决方案来解决:

并将文件名保持为:

abc-${counter}.png

其中,
计数器
是一个计数器变量,它随每个请求而递增。 此外,文件夹中的文件也类似于abc-1.png abc-2.png等。

我建议使用和组合如下:

  • 将Beanshell取样器添加到您的测试计划中
  • 将以下代码放入“脚本”区域:

  • 在Beanshell采样器后添加ForEach控制器,并按如下方式进行配置:

    • 输入变量前缀:
      文件
    • 输出变量名称:任何有意义的内容,即
      currentFile
    • 勾选“在编号前添加”\uu

  • 将执行文件上载的HTTP请求采样器放在ForEach控制器下

  • ${currentFile}
    放入“文件路径”输入
  • 有关使用Beanshell增强JMeter测试的全面信息,请参阅指南。我建议您使用和组合如下:

  • 将Beanshell取样器添加到您的测试计划中
  • 将以下代码放入“脚本”区域:

  • 在Beanshell采样器后添加ForEach控制器,并按如下方式进行配置:

    • 输入变量前缀:
      文件
    • 输出变量名称:任何有意义的内容,即
      currentFile
    • 勾选“在编号前添加”\uu

  • 将执行文件上载的HTTP请求采样器放在ForEach控制器下

  • ${currentFile}
    放入“文件路径”输入

  • 有关使用Beanshell增强JMeter测试的全面信息,请参阅《指南》

    这正是我们想要的!我会尝试并让您知道:-)如果JMeter能够自动从源文件夹中选择文件并将其存储到目标文件夹中,是否可能?这正是我们想要的!我会尝试一下,并让您知道:-)如果JMeter可以自动从源文件夹中选择文件并将其存储到目标文件夹中,是否可能?此方法肯定有效。但比@Dmitri T答案长。谢谢我不认为它更长,我确信它是标准的、可维护的,并且比Beanshell取样器性能更好。阅读JMeter最佳实践:。此方法绝对有效。但比@Dmitri T答案长。谢谢我不认为它更长,我确信它是标准的、可维护的,并且比Beanshell取样器性能更好。请阅读JMeter最佳实践:。
    File folder = new File("c:\\somefolder");
    
    File[] files = folder.listFiles(new FileFilter() {
        public boolean accept(File file) {
            return file.isFile();
        }
    });
    
    for (int i=0; i < files.length; i++) {
        vars.put("file_" + i, files[i].getAbsolutePath());
    }
    
    file_1=C:\somefolder\somefile.txt
    file_2=C:\somefolder\someotherfile.jpg