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

How to find if URL contains specific format and then run execute current transcation

我目前在 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 contians -1,if 控制器的子控制器将被执行。 然后你需要第二个 if 控制器:

"${__BeanShell(!'${URL}'.contains('-1'))}"

第二个请求。

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

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

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

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

按如下方式制定测试计划:

  • 线程组
    • CSV 数据集配置
    • 如果控制器 - 条件 "${URL}".indexOf("-1") > -1
      • 如果 URL 包含“-1”
      • 则执行采样器
    • 如果控制器 - 条件 "${URL}".indexOf("-1") == -1
      • 如果 URL 不包含“-1”
      • 则执行采样器

请参阅 How to use JMeter's 'IF' Controller and get Pie guide for more details on using JMeter's IF Controller 到 运行 个基于特定条件的采样器。