【问题标题】:Jmeter: iterate and increment with every request then go backJmeter:迭代并增加每个请求然后返回
【发布时间】:2018-04-04 22:17:41
【问题描述】:

我有一个 JDBC 请求,它返回如下字符串:“这是一个示例”。我希望能够按字符拆分该字符串(即:var_1=t、var_2=h、var_3=i 等)并在 HTTP 请求中迭代它们。不仅迭代,而且每次请求都会增加搜索模式,然后在最后减少,例如:

  1. 请求:t
  2. 请求:第
  3. 请求:你
  4. .....
  5. 请求:你
  6. 请求:第
  7. 请求:t

现在我正在使用一个线程组,该线程组由 jdbc 请求、jsr223 采样器(我也尝试过使用 beanshell 采样器但也没有成功......)、一个用于遍历值的 forEach 控制器、一个 http 请求和一个响应断言。我无法让它工作,因为我卡在了 jsr223 配置上。我想正确的 beanshell 脚本可以解决这个问题,但我很讨厌 groovy 脚本..

【问题讨论】:

    标签: testing groovy jmeter beanshell jsr223


    【解决方案1】:

    在您的 JDBC 请求之后添加一个 BeanShell 采样器,并在代码区域中使用以下代码:

    String MyVar = vars.get("MyVar");\\ MyVar is the name of the variable that hold the string returned from your JDBC request.
    int x = MyVar.length();
    
    for(i=3;i<=MyVar.length();i++){
        vars.put("Var_" + (i-2), MyVar.substring(0,i));
        vars.put("Var_" + (x * 2 - i -1), MyVar.substring(0,i));
    
    }
    

    然后配置你的 ForEach 控制器如下:

    • 输入变量前缀: Var
    • 输出变量名: variable

    现在您可以在 HTTP 请求中使用 ${variable} 来保存您想要的值。

    【讨论】:

    • 非常感谢!它工作得很好。最初有一些“错误调用 bsh 方法:eval 源文件:内联评估”的问题,但我修复了它..我知道我正在推动它..但是否可以修改它,使其从前 3 个字符开始而不是第一个?例如:而不是从 1 开始然后 2 然后 3 等等.. 以 123 然后 1234 然后 12345 开始并再次以 123 结束? tnx
    • 编辑 beanshell 以从第三个字符开始
    • 我自己发现了它,但 tnx 为您提供所有帮助!
    • 看来我确实有一些问题..在任何情况下它都不会执行字符串两次..它必须执行两次..一个问题可能是我没有在“循环结束索引(包括)”处的 forEach 控制器中指定的任何内容。我不知道这是否重要,但采样器在达到完整字符串时停止并且不会再返回到 3 个字符..p.s。是否可以设置第三个字符永远不应该是空格的条件? tnx
    • 我再次编辑了答案,请尝试一下,如果有错误请告诉我,如果有效,我会检查空格
    猜你喜欢
    • 1970-01-01
    • 2018-01-12
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2019-05-08
    • 2018-01-30
    相关资源
    最近更新 更多