Jmeter邮件阅读器采样器"文件" protocol - 如何从文件夹中读取消息文件(.msg)

时间:2014-08-04 22:00:15

标签: email csv jmeter

我在文件夹中有Outlook消息文件(.msg)。我希望邮件阅读器采样器从文件夹中读取这些消息..

我可以复制文件路径并使用csv来读取这些消息,但消息ID是动态的,因此文件名会发生变化,因此我每次都要复制文件路径让邮件采样器读取这些消息......有没有替代地动态阅读这些消息。

我的测试计划

邮件阅读器采样器: 协议:文件 服务器:C:\ temp \ apache Jmeter \

apache Jmeter文件夹包含我的.msg文件

当我运行测试时,我收到了响应0消息。

1 个答案:

答案 0 :(得分:1)

因此,您需要首先填充.msg文件列表(可以是动态的)并将它们发送到服务器。

  1. 获取要发送的文件列表并将其存储到JMeter变量
  2. 将保存文件路径的JMeter变量传递给SMTP Sampler
  3. 关于第1点,我建议通过脚本获取文件列表。

    假设遵循测试计划结构:

    • 添加线程组(所有默认值)
    • 添加一个Beanshell Sampler作为Thread Group的子级
    • 在“脚本”区域中添加以下代码:

      File folder = new File("c:/temp/JMeter");
      File [] files2send = folder.listFiles();
      
      int counter = 1;
      
      for (File file : files2send) {
          if (file.getName().endsWith(".msg")){           
      
          vars.put("FILE_" + counter, file.getPath());
          counter++;
          }
      }
      

    这将保存文件,您将发送为JMeter变量,如:

    FILE_1=c:\temp\JMeter\something.msg
    FILE_2=c:\temp\JMeter\somethingmore.msg
    FILE_3=c:\temp\JMeter\somethingelse.msg
    

    您可以查看How to use BeanShell: JMeter's favorite built-in component指南,了解Beanshell测试元素和一种食谱的更多详细说明。

    之后,您可以使用ForEach Controller来迭代文件并将其添加到您的请求中

    将每个控制器添加为线程组的子级(与Beanshell采样器相同的级别

    确保For Each Controller具有以下配置:

    1. 输入变量前缀:FILE
    2. 输出变量名称:CURRENTFILE
    3. 在号码选中
    4. 之前添加_

      为每个控制器添加SMTP采样器作为子级

      要在HTTP请求的“附加文件”节中以${CURRENTFILE}发送的文件