断言为真时退出循环

时间:2016-06-29 20:36:33

标签: loops jmeter performance-testing load-testing assertions

我正在使用MailReaderSampler获取来自给定电子邮件ID的所有邮件。所有电子邮件都包含验证令牌。目前,令牌正在传递邮件的主题。

因此响应数据将

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

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

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

有关如何操作的任何建议吗?

2 个答案:

答案 0 :(得分:0)

这应该可以解决问题,但我还没有尝试过......在邮件采样器之后添加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();
}

答案 1 :(得分:0)

您可以在 WHILE 控制器中使用 MailReaderSampler 并且 WHILE 控制器的条件应为:

${__javaScript("${userDefinedTokens}" != "tokensFromEmail",)}

当您的预期令牌等于电子邮件中的令牌时,while 循环将退出。

userDefinedTokens:你定义你的令牌 tokensFromEmail:您可以使用正则表达式提取器或 JSON 提取器从电子邮件中提取令牌