【问题标题】:Unable to pass jmeter post call's dynamic response to get call无法通过 jmeter post call 的动态响应来接听电话
【发布时间】:2016-10-17 20:34:55
【问题描述】:

我是 JMeter 的新手。我用不同的数据集打了多个“发布”电话。每个 post 调用都会产生唯一的 id 作为响应。我想以 5 分钟的间隔再次将每个唯一 ID 传递给“获取”呼叫。我已经通过正则表达式提取器提取了唯一 ID。问题是,我只能将最后一个唯一 ID 传递给“get”调用,而不是每个唯一 ID。有没有办法我们可以创建动态 regex-key 并将值下游以供进一步使用?enter image description here

【问题讨论】:

    标签: json regex post jmeter dynamic-variables


    【解决方案1】:

    当然有多种方法可以解决这个问题。命名一对:

    1. 将每个不同的 POST 响应 ID 捕获为唯一变量,然后可以在未来的 GET 调用中使用,每个请求都使用唯一 ID 之一。 示例:ID1、ID2、ID3 等...
    2. 为这些 POST/GET 方案中的每一个创建单独的线程组。 JMeter 变量仅对线程组是本地的,因此它们将彼此隔离。如果需要,这也将提供同时运行它们的可能性。
    3. 使用变量(排序计数)在每个 POST 上递增,并将其附加到公共变量名称。 示例: ID${count} 。您必须添加一个 Beanshell 预处理器来增加每个 HTTP 请求采样器中的计数变量。

    int count = Integer.parseInt(vars.get("count")); count = count + 1; vars.put("count", count.toString());

    然后,您可以在发出 GET 请求时迭代直到达到 While 控制器中的计数值,或者您可以减少计数。只要满足 While 语句中的条件,两者都将提供相同的功能。此外,您可以使用带有计数作为迭代次数的循环控制器,并且只需在循环的生命周期内增加另一个计数。

    【讨论】:

      【解决方案2】:

      可能最简单的方法是使用递增的后缀,例如:

      1. 添加__counter() 函数作为“参考名称”的后缀,例如

      2. 每次调用正则表达式提取器时,都会创建一个新的batchid_N 变量,其中N 是由__counter() 函数生成的递增数字

      3. 您将能够在需要时以${batchid_1}${batchid_2} 等的形式访问这些变量值。也可以通过__V() 函数使用另一个 JMeter 函数或变量作为后缀值,例如:

        • ${__V(batchid_${yourVar})} - 将“batchid_”前缀与${yourVar} 变量结合起来

        • ${__V(batchid_${__counter(,)})} - 将“batchid_”前缀与 __counter() 函数结合起来

      请参阅How to Use JMeter Functions 系列文章以获取有关上述和其他 JMeter 函数的更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-08
        • 1970-01-01
        相关资源
        最近更新 更多