【问题标题】:Jmeter - How to loop until certain integer - 'While contoller' nested in the 'Loop contoller'Jmeter - 如何循环直到某个整数 - \'While controller\' 嵌套在 \'Loop controller\'
【发布时间】:2022-10-06 17:03:23
【问题描述】:

我的架构是这样的:

从 JsonPath 我提取所有 programID\'s 之类的:

执行时是这样的:

问题是:如何告诉 while 控制器循环直到 programId 80?

我尝试的是:

任何帮助表示赞赏

    标签: jmeter


    【解决方案1】:

    我认为正确的__groovy() function 是这样的:

    ${__groovy((vars.get('programId_' + vars.get('Counter')) as int) > 80,)}
    

    一般来说,我不建议将 JMeter Functions or Variables 内联到 Groovy 脚本中,因为它不利于性能并且可能会导致问题,而是使用基于代码的等效项,在上面的示例中,vars 代表 JMeterVariables 类实例,请参阅 @987654324 @

    更好的选择是修改您的 JSONPath 查询以返回大于 80 的 ID,请参阅 Filter Operators

    【讨论】:

    • 如果我输入建议的 _groovy() 函数-> 2022-10-03 16:44:18,372 WARN o.a.j.f.Groovy: Error running groovy script javax.script.ScriptException: javax.script.ScriptException: org.codehaus.groovy .runtime.typehandling.GroovyCastException:无法将具有“null”类的对象“null”转换为“int”类。改用'java.lang.Integer'
    • 这意味着Counter 变量不存在或programId_X 不存在或两者兼有,使用Debug Sampler 查看存在哪些变量以及它们的值是什么。
    • 请注意我没有 var Counter,可能这就是我收到此错误的原因。
    • 如果您没有 var Counter 为什么要尝试使用它?
    • 对于那些不注意我所说的内容(关于将 JMeter 函数和变量内联到 Groovy 脚本中)并且也不知道 how to properly ask questions 的人,我无能为力
    【解决方案2】:

    感谢 Dmitri T 的指导。 在这种情况下,对我来说最重要的是将 JSON 路径表达式更改为:

    $..pageItems[?(@.programId>80)].programId
    

    像这样,我能够过滤所有高于 80 的 programId。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-12
      • 1970-01-01
      • 2012-12-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-26
      相关资源
      最近更新 更多