【问题标题】:JMeter Once Only Controller at the endJMeter Once Only Controller 最后
【发布时间】:2018-04-26 00:09:47
【问题描述】:

我想对每个线程执行某个操作,所以,我假设 tearDown Thread Group 不起作用。

只有当它是线程的最后一次迭代时,是否有任何替代方法可以运行 Once Only Controller?

谢谢。

【问题讨论】:

    标签: jmeter


    【解决方案1】:
    1. If Controller 添加到您的测试计划中。
    2. 使用以下表达式作为 If 控制器的条件(假设为 __groovy() function):

      ${__groovy(ctx.getThreadGroup().getSamplerController().getProperty('LoopController.loops').toString() as int == (vars.get('__jm__Thread Group__idx') as int) + 1,)}
      
    3. 将您想要执行的Sampler(s) 作为 If 控制器的子项放在最后

    【讨论】:

    • @uru917 这对你有用吗?我从 if 语句中得到以下错误...javax.script.ScriptException: javax.script.ScriptException: org.codehaus.groovy.runtime.typehandling.GroovyCastException: 不能将具有类 'null' 的对象'null' 转换为类'诠释'。尝试'java.lang.Integer' instea
    • 它对我有用。不要忘记将示例中的“线程组”字符串替换为实际线程组的名称。例如,如果线程组被称为 dummy 它将是: "get('__jm__dummy__idx') as int)" @simon-n
    【解决方案2】:

    添加If Controller 并检查以下条件,即当前迭代是最后一次。例如,如果有 10 次迭代(循环计数):

     ${__groovy(10 == vars.getIteration())} 
    

    如果你有一个变量持有迭代次数,检查变量为myIteration

     ${__groovy(vars.get("myIteration").toInteger() == vars.getIteration())}
    

    【讨论】:

    • 谢谢,我知道您的解决方案有效,但我也希望能够获得迭代次数,以便在更新迭代时不更新 if 条件。
    • @uru917 如何更新迭代?如果你有一个变量,检查变量为${__groovy(vars.get("myIteration").toInteger() == vars.getIteration())}
    • 是的,关键是我想知道是否可以在不使用变量的情况下获得线程组的迭代次数。但这是另一个问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-11
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多