当前位置: 首页 > 面试题库 >

在Jmeter中,如何使用beanshell采样器变量设置可变数量的线程?

阎安邦
2023-03-14
问题内容

在JMeter中,我有一个线程组,我想使用jmeter变量控制运行多少个线程。在线程组中,我将线程数设置为${numThreads}。我有一个安装线程组,它具有一个带有以下内容的bean
shell采样器(该采样器始终在主测试线程组之前运行):

vars.put("numThreads","5");

如果我numThreads在设置线程组中的用户定义变量config元素中进行设置,它将使用正确数量的线程。但是我想使用我在bean
shell采样器中定义的变量来控制它,但是它不起作用。我可以看到正在创建变量,并且可以在日志中打印该值,但是当我使用bean
shell采样器时,线程组不能正确创建5个线程(它创建0个线程)。我唯一能想到的是它们都创建变量,但也许用户定义的config元素会将其创建为整数类型?当我调试变量的类型时,无论它是在用户定义的parms配置中还是在bean
shell采样器中进行设置,它都将显示为字符串。

log.debug(vars.get("numThreads").getClass().getName()); // this prints java.lang.String for both

为什么线程组不能基于bean shell变量创建正确数量的线程?


问题答案:

好吧,我知道了。看起来变量是特定于线程的,而属性是整个测试的全局变量。因此,当我的主线程组启动时,在设置线程组中设置变量超出了范围。现在我在setupgroup
beanshell中设置属性,并在主线程组中使用以下属性:

设置线程组beanshell:props.put(“ threadCount”,“ 3”);

在主线程组中,我可以使用以下命令启动正确数量的线程:$ {__ P(threadCount)}

仍然不知道用户定义的变量config元素为何起作用-它必须生成属性,而不是变量或其他内容。



 类似资料:
  • 嗨,我正在尝试将从一个采样器中提取的值分配给beanshell脚本中的另一个变量。我有下面的beanshell脚本。 jmeter中的文本请求显示beanshell采样器的如下内容 但linkArr变量在调试采样器中显示为空值。 为什么当我期望9PACMISVL6GIQATCO747NQ值被赋给linkArr变量时,却得到一个空值。请建议

  • 我正在找到在JSR223采样器、JSR223预处理程序、JSR223后处理程序和所有其他JSR223脚本中使用变量的方法。 还有一些其他变量,如、、、。我可以很容易地使用它们。 :vars.get(“variable_name”)、vars.put(“variable_name”、“value”)、... :props.get,props.put,... :prev.gettime()、prev.

  • 下面是我简单的Jmeter测试计划。 用户参数如下所示: 我只是调用一个endpoint,读取响应体,并根据找到的ID,在Regex提取器的帮助下调用另一个endpoint。ForEach循环帮助确保对于找到的所有ID,以ID作为路径中的参数调用相同的endpoint。 null 我这里的一个小问题是,用户参数变量从来没有得到更新,并且在运行结束时总是等于0。在这种情况下我做错了什么?以前有人面临

  • 我正在使用jmeter在做一个事务时模拟并发用户。我有一个名为“TransactionReference”的字段,它是唯一的。我想做的是能够让这些用户进行交易。 到目前为止,我所做的是记录事务处理(使用HTTP测试脚本记录器),并获得TransactionReference的静态值。因此,每次运行测试脚本时,它不会插入创建的新事务,因为TransactionReference不再唯一。我试图通过使

  • 我正在从beanshell对api进行dme2调用,并且从它得到了类似{“StagedCustomerID”:“165CE369-A9FB-4D42-B8F0-F119A6AE20EB”}的响应,所以现在我只想将customer id值传递给另一个beanshell采样器,用于下一个api调用,作为JMeter中同一线程中请求体中的一个参数。 请建议在这种情况下我们能做些什么。有什么方法可以做be

  • 这是我在INNO设置中的三个示例部分。我想在INI部分使用。我该怎么做?

  • 问题内容: 有没有办法从一个BeanShell前置/后处理器到另一个BeanShell处理器 (它们在同一个线程组中) 引用变量? 如果我在HTTP Request下的BeanShell PreProcessor中创建一个String变量,那么我可以在同一HTTP Request下的BeanShell PostProcessor中使用或引用该变量。 我尝试通过以下方式访问此变量: + HTTP请求

  • 我创建了一个定制的jmeter java采样器,它在循环中向HTTPendpoint发送请求并解析响应。希望多个线程在单个线程组中运行此采样器。 有人建议,我可以在安装线程组中使用beanshell采样器从csv读取,创建hashmap并使用之类的内容将其存储在JMeter属性中。有人能告诉我这是否是一个合理的方法吗?如果是,我如何访问自定义采样器中的特定JMeter属性? 我找到了这个答案:使用