如何通过添加if控制器来跳过Beanshell PostProcessor(基于先前http请求的正则表达式输出)

时间:2018-07-24 22:28:06

标签: jmeter

我正在使用JMeter 3.2,我有一个beanshell后处理器,其中它在正则表达式(来自先前的HTTP请求)${FollowupBDays}中向外面添加一个数字。这是后处理器的片段:

int FollowupBDays1 = Integer.parseInt(vars.get("FollowupBDays"))+4;

基本上,正则表达式${FollowupBDays}返回一个整数值Ex:3,在BeanShell后处理器中,我使用正则表达式将数字添加到正则表达式输出中,即3+4从后处理器上面一行。如果正则表达式返回空值,即正则表达式的输出返回值 ,因为后处理器在尝试添加  + 4时返回错误,我想跳过BeanShell后处理器。 / p>

您是否可以让我知道在正则表达式${FollowupBDays}返回输出 时可以添加到If控制器以跳过BeanSshell后处理器的条件

我通过将if控制器添加到BeanShell后处理器来尝试以下条件,并且该条件始终跳过后处理器,而不管正则表达式返回的值如何,即当值是3或{{1时}}:

 

1 个答案:

答案 0 :(得分:0)

不可能为后处理器设置任何控制器,包括If Controller。

但是,在后处理器本身的代码中,变量不是整数时,您应该处理这种情况。最好的方法是捕获异常:

int FollowupBDays1 = -1;
try {
  FollowupBDays1 = Integer.parseInt(vars.get("FollowupBDays"))+4;
} catch(NumberFormatException e) { /* remains -1 */ }

或者,您可以在分配变量之前检查在If控制器中尝试使用的条件:

String FollowupBDaysAsString = vars.get("FollowupBDays");
if(!" ".equals(FollowupBDaysAsString))
{
    int FollowupBDays1 = Integer.parseInt(FollowupBDaysAsString)+4;
}