我编写了此代码,以便如果状态== 500,则API的名称将等于“FAKE_CLIENT_RETRY”,如果API的状态==“ERROR”,则名称将等于“FAKE_CLIENT_CALLBACK_ERROR”
import org.apache.jmeter.samplers.SampleResult;
//process main sample
if(("${status}").equals("500")) {
SampleResult.setResponseCodeOK();
SampleResult.setSuccessful(true);
vars.put("Api_Fake_Client_Name","FAKE_CLIENT_RETRY");
}else if(("${status}").equals("ERROR")){
SampleResult.setSuccessful(false);
vars.put("Api_Fake_Client_Name","FAKE_CLIENT_CALLBACK_ERROR");
}else{
vars.put("Api_Fake_Client_Name","FAKE_CLIENT_CALLBACK_SUCESS");
}
但是,即使状态==“ERROR”,它返回的名称也是“FAKE_CLIENT_RETRY”
最奇怪的是,我知道执行进入了条件==“ERROR”的“if”,因为在Jmeter中,伴随status ==“ERROR”的返回出现执行失败,我通过代码片段强制在这种情况下返回失败:
SampleResult.setSuccessful (false);
但是,尽管输入了,它还是忽略了要求重命名api的代码段。
Jmeter 屏幕截图----〉Jmeter response
2条答案
按热度按时间flvtvl501#
以下脚本在BeanShell后处理器中正常运行,未出现任何问题
请注意,您可以通过变量
previous
访问SampleResult。让我们使用prev.setSampleLabel("Label");
来设置样本结果的标签。prev -(SampleResult)-提供对上一个SampleResult的访问
强烈建议迁移到JSR 223后处理器+Groovy,以提高性能、支持新的Java功能以及对BeanShell库进行有限维护
添加一个调试后处理器,通过查看结果树来查看JMeter变量。
Sample test plan (JMX)在GitHub中可用。
mwyxok5s2#
您在Assert中设置了一个
Api_Fake_Client_Name
变量值,它将在下一个采样器中或当前采样器的下一次迭代期间可用(更新):还要注意,从JMeter 3.1开始,您应该使用JSR223 Test Elements和Groovy语言编写脚本,这样您就可以将代码更改为如下形式:
更多信息: