我正在使用MailReaderSampler,它从给定的电子邮件ID中获取所有消息。所有电子邮件中都有一个验证令牌。目前,令牌是在邮件主题上传递的。

因此,响应数据将具有:

Date:--To: --From: --Subject: token : someToken

我已经在User Defined Variables中定义了令牌值,并且正在使用Response assertion检查邮件是否包含令牌。

因此,它将检查所有子结果(所有电子邮件)。现在,每当一封电子邮件包含令牌时,我都想停止测试,并且断言条件不应检入其他电子邮件,因为它已经找到了具有令牌值的电子邮件。

有什么建议吗?

最佳答案

这应该可以解决问题,但是我还没有尝试过……在您的邮件采样器之后,使用以下代码添加BeanShell采样器。

import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.threads.JMeterContextService;

SampleResult[] subResults = JMeterContextService.getContext().getPreviousResult().getSubResults();
for(SampleResult sr : subResults) {
    if (sr.getResponseDataAsString().contains(vars.get("Token").toString()))
        JMeterContextService.getContext().getEngine().stopTest();
}

10-04 19:09