我在测试计划中加入了一个简单的HTTP请求采样器。并且,通过"查看结果树"查看结果并将相同的结果写入文件。我希望这个文件通过邮件采样器发送 问题是,一旦我执行测试用例,它首先发送邮件,然后将新的测试结果附加到文件中。所以,在邮件中我得到了之前的运行结果,而不是新结果。
我如何加入这个?
答案 0 :(得分:3)
参考文章 - Send JMeter Test Reports Automatically in Email
如果您使用'查看结果树'或'摘要报告'听众,您将无法通过SMTP采样器通过邮件发送当前报告,即使你使用tearDown Thread Group。
原因 :只有在测试完成后,JMeter才会将数据写入这些报告文件。
您可以通过添加tearDown Thread Group来验证这一点。并在运行SMTP Sampler之前添加延迟。密切关注文件大小,它是在测试开始后创建的,但是在最后一个线程(在这种情况下为SMTP Sampler)完成执行时会写入数据。
因此,您的电子邮件只附加一个空文件。
解决方案 - 1.在'user.properties'文件中查找并修改(或添加,如果不存在)以下部分,将autoflush参数设置为true:
# AutoFlush on each line written in XML or CSV output
# Setting this to true will result in less test results data loss in case of Crash
# but with impact on performances, particularly for intensive tests (low or no pauses)
# Since JMeter 2.10, this is false by default
jmeter.save.saveservice.autoflush=true
这种方法的问题是,依赖于另一个实用程序。此外,我们还需要为不同的平台(Windows / Linux)编写不同的脚本。
在这种情况下,我们需要的是'灵活文件编写器'插件。它为您提供了强大的自定义功能,可以配置您要写入报告文件的数据,还可以包含要通过SMTP采样器发送的完整报告文件。
我能够使用Flexible File Writer Listener和tearDown Thread Group实现这一目标。这是我的测试计划的结构 -
测试计划
---线程组
-------采样
------- jp @ gc-灵活的Filw作家
--- tearDown Thread Group
------ SMTP采样器
您可能希望在从tearDown Thread Group发送邮件之前添加一些延迟。
您可以使用内置的Jmeter插件管理器或JMeter插件站点下载Flexible File Writer插件 - jp@gc Flexible File Writer Plugin
答案 1 :(得分:2)
我观察到JMeter在使用SMTP采样器执行此操作时,首先使用空白或旧运行报告发送电子邮件。 为了满足它,这就是我的尝试:
调用jmeter -n -t"脚本路径" -l" JTL报告路径"
sendEmail -f Sender_Email -t Receiver_Email -cc CC_Email -s Mail_Server -u" Subject" -m"电子邮件正文" -a" JTL报告附件的路径"
执行JMeter脚本,在第一步中指定的路径生成报告,然后使用步骤2发送带有报告的电子邮件。
这可能会有所帮助。
答案 2 :(得分:1)
我建议您在tearDown Thread Group发送一封专门用于后期处理的电子邮件,这似乎正是您所寻找的。 p>
同时确保您通过Test Action采样器等待合理的时间,因为JMeter不会动态更新结果文件,它会定期刷新结果块。
如果你不想要" old"您可以使用setUp Thread Group和OS Process Sampler来删除旧结果文件或将其移动到其他位置的数据。
有关更多JMeter电子邮件提示和技巧,请参阅Load Testing Your Email Server: How to Send and Receive E-mails with JMeter