如何使用带Beanshell后处理器的控制器

时间:2017-04-05 20:41:33

标签: jmeter

这是我正在寻找的地图:

  1. 如果用户以零售商身份登录,则按照特定要求
  2. 如果用户以转销商身份登录,则按照特定要求
  3. 我为零售商做了什么:

    1. 我添加了一个HTTP POST请求以零售商身份登录
    2. 还添加 BeanShell PostProcessor 以获取上述请求的URL,该请求将通过上述登录请求返回。
    3. 我已将以下代码添加到 BeanShell PostProcessor 中,以确保返回的网址是否包含“零售商”之类的任何字词。
    4. 代码:

      String URL = prev.getURL().toString();
      vars.put("URL", URL);
      
      if (vars.get("URL").contains("retailer")) {
          log.info("PASS");
      } else {
          log.info("FAIL");
      }
      

      以上代码效果很好。

      1. 接下来,我添加了IF控制器,并在此IF控制器下添加了所有零售商相关的HTTP请求。现在我不确定我应该写什么,如果控制器告诉以前的URL是否包含单词“retailer”,那么请遵循IF控制器下的所有HTTP请求。
      2. 我试过关注IF控制器,但似乎无法正常工作:

        "${URL}".contains("retailer")
        

        我觉得jmeter忽略了IF控制器,因为我没有收到任何错误。

        目标是根据零售商/经销商等用户角色执行特定请求。

1 个答案:

答案 0 :(得分:1)

您在JavaScript中没有contains()功能,您需要使用indexOf()功能,因此您的If Controller条件应该是这样的:

"${URL}".indexOf("retailer") != -1

请记住,当您的测试无法按预期工作时,请始终查看 jmeter.log 文件,在99.9%的情况下,您可以从中找出原因。

相关问题