【问题标题】:Variable value not updated in each iteration in JmeterJmeter的每次迭代中都没有更新变量值
【发布时间】:2021-09-11 17:09:30
【问题描述】:

我在我的脚本中使用时间戳作为一个值,以保持它在每次迭代中的唯一性和可区分性。我正在使用 ${__time(/1)} 函数并将其存储在事务控制器内的用户定义变量中,然后在其他事务和 json 有效负载中使用相同的变量。这适用于单次迭代。

我预计在每次迭代中都会更新时间戳。但我可以看到在每次迭代中都使用了相同的时间戳。我怎样才能让它在每次迭代中更新时间戳,因为我只需要在迭代中使用一个时间戳值,而不是在连续迭代中重复。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    User-Defined Variable 配置元素在开始时只处理一次。它在测试计划之后处理。它不适合您的用例。

    UDV 不应与每次调用时生成不同结果的函数一起使用。只有第一次函数调用的结果会保存在变量中。

    可能有多种选择。

    1. 使用User Parameters预处理器

    您可以设置Update Once Per Iteration 以满足您的要求。

    1. 使用Set Variables Action插件

    1. 在 JSR223 预处理器中设置值 您可以将控制器放在测试计划下方。

    【讨论】:

      【解决方案2】:

      根据User Defined Variables documentation

      请注意,测试计划中的所有 UDV 元素 - 无论它们在哪里 - 在开始时都会被处理。

      所以变量只被评估一次,当测试开始时,如果你想让它在每次调用它时返回你当前的时间戳 - 只需在需要的地方直接使用 __time() 函数,不需要将它声明为变量。

      有关 JMeter 函数概念的更多信息:Apache JMeter Functions - An Introduction

      我也不认为你的${__time(/1)} 函数中的/1 位有什么意义,也许值得考虑完全删除它

      【讨论】:

        【解决方案3】:

        为变量添加值只会在加载时节省一次时间,您可以将时间函数放在有效负载中以获得不同的时间

        另一种选择是将预处理器用作User Parameters 而不是用户定义的变量

        要在测试运行期间定义变量,请参阅用户参数。 UDV 按照它们在计划中出现的顺序从上到下进行处理

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-12-02
          • 2016-08-19
          • 2021-05-30
          • 2023-04-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多