If statement 如何查找URL是否包含特定格式,然后运行“执行当前事务”

If statement 如何查找URL是否包含特定格式,然后运行“执行当前事务”,if-statement,jmeter,If Statement,Jmeter,我目前在JMeter中有两个事务控制器。如果${url}末尾包含-1,我希望执行第一个事务,如果${url}末尾不包含-1,则执行第二个事务 ${url}是来自CSV数据集配置的变量。基本上,它是一个常规的HTTP URL 这就是我的JMeter测试计划的样子: Thread Group --CSV Data Set config --Transaction 1 --HTTP request which will execute ${URL} -- Transaction 2 ---

我目前在
JMeter
中有两个事务控制器。如果
${url}
末尾包含-1,我希望执行第一个事务,如果
${url}
末尾不包含-1,则执行第二个事务

${url}
是来自CSV数据集配置的变量。基本上,它是一个常规的HTTP URL

这就是我的
JMeter
测试计划的样子:

Thread Group
--CSV Data Set config 
--Transaction 1
  --HTTP request which will execute ${URL} 
-- Transaction 2
  ----HTTP request which will execute ${URL} 
现在我可以在每个事务上方添加
If
,但我不确定应该将
If
语句与什么进行比较

示例URL:

第一个URL-/test/user/editprofile/userid/1234-1 第二个URL-/test/user/viewprofile/userid/8975


第一个URL应在第一个事务下运行,第二个URL应在第二个事务下运行。

在if控制器中,您可以设置以下条件:

"${__BeanShell('${URL}'.contains('-1'))}"
如果url为-1,则将执行if控制器的子级。 然后,您需要第二个if控制器,该控制器具有:

"${__BeanShell(!'${URL}'.contains('-1'))}"
对于第二个请求

另一种选择是使用交换机控制器,第一个请求作为第一个子项,第二个请求作为第二个子项。然后在后处理器中,需要根据结果将变量设置为0或1

var url = vars.get('URL');
var switch = 0;
if(!url.contains('-1'))
     switch = 1;

vars.put('switch', switch.toString());

在开关控制器中使用${switch}作为条件变量。

在if控制器中,可以将以下内容作为条件:

"${__BeanShell('${URL}'.contains('-1'))}"
如果url为-1,则将执行if控制器的子级。 然后,您需要第二个if控制器,该控制器具有:

"${__BeanShell(!'${URL}'.contains('-1'))}"
对于第二个请求

另一种选择是使用交换机控制器,第一个请求作为第一个子项,第二个请求作为第二个子项。然后在后处理器中,需要根据结果将变量设置为0或1

var url = vars.get('URL');
var switch = 0;
if(!url.contains('-1'))
     switch = 1;

vars.put('switch', switch.toString());

在开关控制器中使用${switch}作为条件变量。

在if控制器中,可以将以下内容作为条件:

"${__BeanShell('${URL}'.contains('-1'))}"
如果url为-1,则将执行if控制器的子级。 然后,您需要第二个if控制器,该控制器具有:

"${__BeanShell(!'${URL}'.contains('-1'))}"
对于第二个请求

另一种选择是使用交换机控制器,第一个请求作为第一个子项,第二个请求作为第二个子项。然后在后处理器中,需要根据结果将变量设置为0或1

var url = vars.get('URL');
var switch = 0;
if(!url.contains('-1'))
     switch = 1;

vars.put('switch', switch.toString());

在开关控制器中使用${switch}作为条件变量。

在if控制器中,可以将以下内容作为条件:

"${__BeanShell('${URL}'.contains('-1'))}"
如果url为-1,则将执行if控制器的子级。 然后,您需要第二个if控制器,该控制器具有:

"${__BeanShell(!'${URL}'.contains('-1'))}"
对于第二个请求

另一种选择是使用交换机控制器,第一个请求作为第一个子项,第二个请求作为第二个子项。然后在后处理器中,需要根据结果将变量设置为0或1

var url = vars.get('URL');
var switch = 0;
if(!url.contains('-1'))
     switch = 1;

vars.put('switch', switch.toString());

使用${switch}作为交换机控制器中的条件变量。

按如下方式构建您的测试计划:

  • 螺纹组
    • CSV数据集配置
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)>-1
      • 如果URL包含“-1”,则要执行的采样器
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)==-1
      • 如果URL不包含“-1”,则要执行的采样器

有关基于特定条件使用JMeter运行采样器的更多详细信息,请参阅指南

按如下方式构建您的测试计划:

  • 螺纹组
    • CSV数据集配置
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)>-1
      • 如果URL包含“-1”,则要执行的采样器
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)==-1
      • 如果URL不包含“-1”,则要执行的采样器

有关基于特定条件使用JMeter运行采样器的更多详细信息,请参阅指南

按如下方式构建您的测试计划:

  • 螺纹组
    • CSV数据集配置
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)>-1
      • 如果URL包含“-1”,则要执行的采样器
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)==-1
      • 如果URL不包含“-1”,则要执行的采样器

有关基于特定条件使用JMeter运行采样器的更多详细信息,请参阅指南

按如下方式构建您的测试计划:

  • 螺纹组
    • CSV数据集配置
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)>-1
      • 如果URL包含“-1”,则要执行的采样器
    • 如果控制器-condition
      “${URL}”.indexOf(“-1”)==-1
      • 如果URL不包含“-1”,则要执行的采样器

有关基于特定条件使用JMeter运行采样器的更多详细信息,请参阅指南

就我所知,JavaScript中没有“contains”函数,感谢您的帮助。开关控制器逻辑会工作吗?我将在周日试一试,并分享结果。同时,如果您有任何其他建议,请suggest@DmitriT你说得对,谢谢。我编辑了答案以使用BeanShell函数,这正是我想要的,我之前在大脑中有js。我已经测试过这个解决方案。@user1169236我一直在使用开关控制器。关键是,使用switch控制器时,您需要确保孩子们的顺序正确,与他们的条件相关。就我所知,JavaScript中没有“包含”函数感谢您的帮助。开关控制器逻辑会工作吗?我将在周日试一试,并分享结果。同时,如果您有任何其他建议,请suggest@DmitriT你说得对,谢谢。我编辑了答案以使用BeanShell函数,这正是我想要的