如何在 Jmeter BeanShell 中循环 HTTP 请求并每次更新变量

2024-01-21

我有 2 个 HTTP 请求:一个用于从 api 获取数据,另一个用于将数据 POST 到 api。

GET 请求以 JSON 形式带来多个用户。 POST 请求需要每个用户 1 个请求。因此我需要:

  1. 根据用户数量多次循环相同的 POST 请求(已经通过使用 while 控制器从 JSON 响应检查用户数量来做到这一点)。

  2. 对于每个 POST 请求,我需要根据 JSON 响应中的用户信息来更新此类请求中使用的变量。

我尝试的方法是在 POST 请求中使用 BeanShell PreProcessor,但我遇到了麻烦。

假设 POST 请求正文中有一个名为 ${name} 的变量。我正在使用 JSON Extractor PostProcessor(在 GET 请求上)路径:“Travelers[0].FirstName”,它返回第一个用户的名字,但随后我需要第二个用户的名称(Travelers1 https://i.stack.imgur.com/ZUCA7.png.FirstName) 在发送 POST 请求之前分配给相同的变量 ${name} ,依此类推。

  • 我想创建一个这样的 for 循环:

    for (int i = 0; i <= numberOfTravelers; i++) {
     vars.put("Name", Travelers[i].FirstName) 
     }
    

问题是我不知道如何从另一个先前请求的 JSON 响应中调用 JSON 路径。有没有办法将 jsonpath 引用到特定的 JSON 响应,或者将整个 JSON 响应保存在变量中,然后在该变量中查找特定值作为 JSON 路径。

我已经使用 JSON 提取器尝试过此操作,但问题是,如果我使用路径:Travelers[*].FirstName,它实际上会获取 JSON 上的所有名称,但变量 ${name} 只会存储一个名称,而不是它们全部作为一个数组,稍后我可以使用普通变量 ${name[i]} 在 for 循环中访问它们。这就是为什么我需要从 BeanSheall 访问 JSON 路径。

以下是 JSON 响应的示例:

{
"Travelers":
[
    {
        "FirstName":"VICTOR",
        "Surname":"ORREGO",
        "Key":"1.1",
        "PassengerRPH":1,
        "TypeCode":"ADT"
    },
    {
        "FirstName":"JULIO",
        "Surname":"OZAETA",
        "Key":"2.2",
        "PassengerRPH":2,
        "TypeCode":"ADT"
    }
]
}

这是后处理器JSON 提取器 https://i.stack.imgur.com/ZUCA7.png在我正在使用的 GET 请求中。它当前正在将从 JSON 响应 (Victor) 获得的第一个名称分配给变量 ${Name} 我需要在下一次迭代(POST 请求)中变量 ${Name} 返回该路径中的下一个名称,即 Julio。


这是解决方案..

  1. Add a JSON Extractor https://jmeter.apache.org/usermanual/component_reference.html#JSON_Extractor to the get request .. use match no -1 to store all Firstnames as show below. enter image description here

我正在使用单个 JSON 提取器提取所有名字并将其存储在 JMeter 变量中 2. 在同一个get请求中添加一个JSR223 后处理器 https://jmeter.apache.org/usermanual/component_reference.html#JSR223_PostProcessor并将计数器值设置为1

vars.put("counter","1");
  1. Add a while 循环 https://www.redline13.com/blog/2018/06/jmeter-while-controller/到测试计划并将以下条件添加到 while 循环中。

${__javaScript(parseInt(${counter})

4.在post请求中添加JSR223预处理器 https://jmeter.apache.org/usermanual/component_reference.html#JSR223_PreProcessor并添加以下代码

vars.put("name",vars.get("FirstName_"+vars.get("counter")));

这会将 FirstName_Matchno 的值存储在 name 变量中。

  1. Add a JSR223 后处理器 https://jmeter.apache.org/usermanual/component_reference.html#JSR223_PostProcessor到 POST 请求并递增计数器。

int counter = Integer.parseInt(vars.get("counter")) +1; vars.put("计数器",Integer.toString(counter));

您可以在结果中看到它在循环的每次迭代中替换不同的名称

让我知道是否有帮助..

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Jmeter BeanShell 中循环 HTTP 请求并每次更新变量 的相关文章

  • 仅在 n 个断言错误后停止 JMeter 测试执行

    Problem 我正在 JMeter 2 13 中模拟压力测试 我的想法是在达到一定的响应时间上限后停止测试 我使用 Duration Assertion 节点进行测试 但是 我不想在第一次此类失败后停止测试执行 在其他稳定的情况下 它可能
  • 我们可以通过jmeter.bat和ApacheJMeter.jar打开JMeter。有什么不同?

    我们可以通过以下方式打开JMeterjmeter bat and ApacheJMeter jar 它们之间有什么区别 ApacheJMeter jar 文件是一个可执行 jar 因此如果它与 java 应用程序关联 则可以通过在 wind
  • 如何从 WebDriver Sampler 中设置 JMeter Vars?

    I had previously used a CSS JQuery extractor to get a URL from a page and add it to JMeter vars accessing it here var pa
  • jmeter HTTP响应代码:org.apache.http.conn.HttpHostConnectException,非HTTP响应消息:连接被拒绝错误

    我正在使用 JMeter 测试负载 我正在使用 Amazon Server 当我测试 400 个并发用户的负载时 我收到错误消息 HTTP response code org apache http conn HttpHostConnect
  • JMeter(活动?)FTP 到 VLTrader

    情况 我正在使用 JMeter 来加载测试我的通信应用程序 Cleo VLTrader 我是 JMeter 的新手 并且能够使 HTTP 通信工作 但不能使 FTP 工作 当我尝试使用 JMeter FTP 请求采样器时 我可以在服务器端看
  • 使用Java代码进行Jmeter分布式测试

    我能够使用 Java 代码运行 Jmeter 但如果我想做与分布式测试相同的操作 那么如何在 Java 代码中添加远程引擎 这是一个sample http alvinalexander com java jwarehouse jakarta
  • JMeter:为单个用户触发多个并发 HTTP 请求

    我有一个带有线程组和 Cookie 管理器的 JMeter 负载测试脚本 线程组中的用户首先使用HTTP采样器登录来获取cookie 然后 循环控制器触发交错采样器 该采样器在几个向服务器发出查询的 HTTP 采样器之间交替 现在 我希望交
  • 在 JMeter 的 BeanShell Sampler 中将字符串解析为整数

    我试图在 JMeter 中将字符串解析为整数 但由于以下错误而失败 如果我尝试打印 vars get 返回的字符串 它们看起来不错 2014 06 28 00 08 52 WARN jmeter assertions BeanShellAs
  • 负载测试时如何测量CPU和内存

    我们在异构环境中使用 JMeter 并且希望在运行服务或 Web 应用程序的服务器上产生重负载时测量 CPU 和内存 您建议使用什么 是否有任何软件解决方案 开源或商业 可以将 CPU 和内存使用情况记录在文件或数据库中 谢谢你 您可以使用
  • 在 Jmeter 中使用 JsonPath 和 != 条件从 JSON 中提取一些值

    我有以下 JSON 我需要获取没有 type Jenkins 的实例的 id 值 data id 35002399 6fd7 40b7 b0d0 8be64e4ec09c name 94Jenkins url http 127 0 0 1
  • JMeter - 根据平均响应时间测试失败

    我正在使用性能插件在 Jenkins 中运行 JMeter 作业 如果平均响应时间 这是我尝试添加 BeanSehll Listener 和 Assertion 的方法 Recording Controller Home Page Bean
  • JMeter 在性能测试期间挂起

    我试图模拟 4 个不同用户的 100 个线程请求 所有 97 个请求均已发送和接收 但其余 3 个请求仍显示为正在执行 我必须手动停止 Jmeter 然后只传递剩余的请求 为什么会发生这种情况 您的计算机可能没有资源来执行请求 或者 Jav
  • 如何使用 JMeter 发送动态 URL 参数

    我想将 URL PATH 发送为 controller 1 1 controller 2 2 start 但是参数 2controller 2是动态的 如何发送该参数 使参数成为变量 controller 2 controller2 par
  • JMeter - 使用其他 BeanShell 预处理器/后处理器中的变量?

    有没有一种方法可以将变量从一个 BeanShell 预处理器 后处理器引用到另一个 BeanShell 处理器 它们在同一个线程组内 如果我在 HTTP 请求下的 BeanShell 预处理器内创建一个字符串变量 那么我可以在同一 HTTP
  • 暂停和恢复 jmeter 执行

    我正在寻找暂停和恢复 JMeter 执行 单 多线程 的选项 1 Pausing and Resuming through command line 2 From the Jmeter UI 3 By coding in some lang
  • 将 JMeter 报告转换为 JUnit 报告

    如何将 JMeter 报告转换为 JUnit 报告 有些工具 例如 VSTS 知道如何集成 JUnit 报告 但不知道如何集成 JMeter 报告 尽管它们可以运行 JMeter 我创建了一个 XSLT 将 XML JMeter 报告转换为
  • JMeter 中的周期性后台任务

    我的测试计划中的请求使用授权令牌 我知道该令牌将在 1 小时内过期 我需要以某种方式每 59 分钟重新请求一次令牌 直到测试完成 有人可以建议最好的方法吗 看起来使用 While 控制器测试将永远不会完成并停留在永恒的 while 循环中
  • JMeter:如何访问 ForEach 控制器内的循环计数器?

    我在 JMeter 中有一个 ForEach 控制器 如何访问此控制器内循环的计数器 通过变量 然后使用它来创建新变量 Put 计数器配置元素 http jmeter apache org usermanual component refe
  • 是否可以将 jmeter 变量包含在从 CSV 获取的值中?

    我有一个 csv 文件 其中包含名为 query 的列 我要查询的全部内容之一是 user id list list 我想要做的是让 jMeter 在将查询传递到 HTTP Sampler 时覆盖查询中的 list 和 id 变量 其中变量
  • 如何在JMeter中实现pacing?

    我在 jMeter 中模拟以下场景 10 个用户 ThreadGroup 正在登录 每个用户 ThreadGroup 应等待 延迟 10 秒才能启动下一个用户 ThreadGroup 我该如何实施 现在我有这样的事情 线程组 10us Ht

随机推荐

  • Angular.js ui-grid 自定义日期过滤器

    我正在使用角度网格 ui grid 位于ui grid info http ui grid info 我正在尝试制作一个自定义过滤器 它将使用日期输入控件按日期过滤网格 一个用于小于 一个用于大于 我似乎可以在 columnDefs 中使用
  • 动态更改IP地址?

    考虑一下这个案例 我想经常抓取网站 但有一天 限制后我的IP地址被阻止了 那么 如何动态更改我的IP地址或任何其他想法 一种方法使用Scrapy http scrapy org 将使用两个组件 RandomProxy and RotateU
  • 了解oauth 2.0中客户端id、客户端密钥的需求

    我有一个网站 要求用户通过提供电子邮件和密码来登录以获得访问令牌 其中访问令牌令牌用于访问 api 然后 用户可以在访问令牌提供的范围内获得读 写的访问权限 那么 这里我想了解的是 client id 和 client Secret 在这种
  • Automapper、泛型、dto funtimes

    这是交易 我有一个报告设计器 用户可以根据一些预定义的数据集创建报告 他们可以选择要包含在报告中的一组列 然后在运行报告时 通过使用自动映射器将 NHibernate 集合映射到 dto 类集合来创建 IList 这样做的问题是 DTO 集
  • E:软件包“oracle-java8-installer”没有安装候选者

    我尝试使用以下命令安装 java8 sudo add apt repository ppa webupd8team java sudo apt get update sudo apt get install oracle java8 ins
  • React Bootstrap 弹出窗口在外部点击时关闭

    React Bootstrap 提供了一个弹出窗口控件 我希望在单击弹出窗口外部时将其关闭 其方式与模态的工作方式类似 默认情况下点击开箱即用即可将其关闭 有没有办法使用 ReactBootstrap 来做到这一点 或者我需要自定义代码吗
  • SwiftUI – 如何将 NavigationView 的标题设置为大标题(或小标题)?

    使用 SwiftUI 如何更改导航栏的标题大小 在标准标题或大标题之间进行选择 SwiftUI iOS 14 NavigationView TopLevelView navigationBarTitleDisplayMode inline
  • 函数声明与函数定义

    如果我有这个原型 int bar int 对于编译器我是宣告标识符bar 如果我有这样的定义 int bar int a 对于编译器我是defining标识符bar 一般来说 定义会为对象分配存储空间 但是 函数声明也是如此吗 另外在这种情
  • C++:提取分析数学表达式的符号/变量

    我有用户可以提供的表达式 例如 a sin w t a b c x 2 y 2 2 我愿意just获取那里的变量列表 我不需要做任何替换 所以 对于第一个公式 它是 a w t 对于第二个 a b c 对于最后一个 x y 该表达式主要是为
  • 使用 yum 安装同一软件包的多个版本? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一台安装了奇怪的内部版本 MySQL 的服务器 并且想在该节点上安装collectd 不幸的是 collectd 依赖于 MySQL 并且安装失败
  • 用于将数据从业务机会复制到相关自定义对象的自定义按钮

    我有一个自定义对象 用于映射到机会的产品设置 这是一种一对多的关系 一个机会映射到许多设置对象 但一个设置对象仅映射到一个机会 机会有一些设置字段需要充当相关自定义对象的默认值 不幸的是 我不能只在公式中指定它们 出现错误 我想做的是有一个
  • 使用钩子时等待状态更新

    如何使用 Hooks 等待状态更新 当我提交表格时 我需要检查是否termsValidation在运行一些附加代码之前为 false 如果状态刚刚发生变化 它就不会注意到这一点 import React useState from reac
  • 在常见情况下什么时候适合使用 Core Animation 而不是 UIView 动画

    这与许多小错误有关 这些小错误可能被一个人通常认为是次要的 但另一个人则认为是重大错误 我越来越注意到的是 当使用所有口味时UIView animateWithDuration 它实际上修改了不必要的东西 例如我的视图的多个属性 以执行简单
  • 如何从右向左滑动切换div?

    请看这个小提琴http jsfiddle net MKwwH http jsfiddle net MKwwH 我想要链接images link从右向左滑动切换 document ready function hidden hide soun
  • 我可以使用“com.apple.springboard.lockcomplete”通知吗?

    我试图找到设备锁定状态 因为 UIApplicationState 在锁定设备时给出了错误的状态 它给出了 UIApplicationStateActive 几秒钟 我找到了一种解决方案达尔文通知 https developer apple
  • Visual Studio 还是 GCC? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Java 中对象的链式调用和继承

    当声明链式调用的方法时 通常它returns this在该方法的末尾 所以我声明 public class Foo public Foo setTitle String title return this And public class
  • Nullable 的大小是多少?

    所以 实际上有几个问题 An int Int32 被指定为 显然 32 位 怎么样int Nullable
  • 关闭 STRICT_TRANS_TABLES 安全吗?

    我的 PHP mySQL 后端托管在外部站点上 自 2014 年以来一直运行良好 最近 它开始抛出 字段没有默认值 错误 我检查了配置并发现STRICT TRANS TABLES 这会在某些情况下为没有默认值的字段提供这些错误 我的问题是删
  • 如何在 Jmeter BeanShell 中循环 HTTP 请求并每次更新变量

    我有 2 个 HTTP 请求 一个用于从 api 获取数据 另一个用于将数据 POST 到 api GET 请求以 JSON 形式带来多个用户 POST 请求需要每个用户 1 个请求 因此我需要 根据用户数量多次循环相同的 POST 请求