REST API 中的动态变量

问题描述 投票:0回答:1

我最近一直在玩JMeter。我的任务是使用 REST 请求更新 Google 表格中一定数量的用户名和职位。

(表格示例)

id 名字 角色
1 随机名称 随机工作
2 随机名称 随机工作
3 随机名称 随机工作
4 随机名称 随机工作
5 随机名称 随机工作
6 随机名称 随机工作
7 随机名称 随机工作
8 随机名称 随机工作
9 随机名称 随机工作
10 随机名称 随机工作

为此,我编写了一个代码来生成随机名称和作业。这段代码工作正常。难点如下。我还需要为 ID 编写代码,该 ID 将递增 1,以便每次迭代都会更新下一个用户。我编写了一个循环,将 ID 加 1,直到达到最终结果(我要更新的列表的末尾,例如从 5 到 10)。并将其放入变量中。

    int b = 10;

    for (int i = 5; i <= b; i++) {

     String intToString = i + "";
     
     vars.put("IDvar", intToString);
     IDvar = vars.get("IDvar");
     log.info("ID: " + IDvar);
}

我应该将此变量放在路径中 (...?command=updateuserbyid&id=${IDvar}&name=${randomNameVar}&role=${randomJobVar}) 并且它应该更新指定中的数据范围。

JMeter 看到了该变量,但它没有按照我想要的方式工作。它只更新循环中最后一个用户的数据(在本例中是第 10 个用户),并且我创建的线程数或循环计数并不重要。但我希望所有用户的数据从 ID 5 更新到 ID 10。我查看了日志,循环在那里工作正常。循环显示所有应该更新的 ID。

2024-03-13 19:02:28,052 INFO o.a.j.u.BeanShellTestElement: ID: 5
2024-03-13 19:02:28,052 INFO o.a.j.u.BeanShellTestElement: ID: 6
2024-03-13 19:02:28,052 INFO o.a.j.u.BeanShellTestElement: ID: 7
2024-03-13 19:02:28,052 INFO o.a.j.u.BeanShellTestElement: ID: 8
2024-03-13 19:02:28,052 INFO o.a.j.u.BeanShellTestElement: ID: 9
2024-03-13 19:02:28,052 INFO o.a.j.u.BeanShellTestElement: ID: 10

问题是,为什么用户不按周期更新呢?我缺少什么?请不要无礼,我只是一个想学习如何编写代码的艺术学生。

java loops jmeter
1个回答
0
投票

您的代码每次被调用时都会返回

10

如果您想要递增的数字,您可以使用:

  1. __threadNum() 函数返回当前线程(虚拟用户)的数量
  2. ${__jm__Thread Group__idx}
    JMeter 变量,返回线程组的当前迭代
  3. Counter 配置元素(或 __counter() 函数) - 在每次迭代或调用时返回递增的数字。有关更多详细信息,请参阅如何使用 JMeter 计数器进行复杂测试文章。
© www.soinside.com 2019 - 2024. All rights reserved.