我试图将超过九个参数从 Jenkins 传递到 JMeter4.0。
当我阅读时,我发现 JMeter 不接受超过 9 个参数。作为解决方法,我想将所有参数作为字符串传递,并在 JMeter BeanShell 中将其拆分。
java -jar -Xms512m -Xmx2048m C:\JMeter4\bin\ApacheJMeter.jar -Jjmeter.save.saveservice.output_format=csv -Jjenkinsparams="%Timetorun%,%Users%" -n -t %JMeterPath%\bin\tests\tests.jmx -l %WORKSPACE%\Results.csv
测试在 Windows 机器上运行。从这次通话中我得到了
詹金斯参数=“300,2”
我使用这样的 BeanShell 预处理器:
String line = "${__P(jenkinsparams)}";
String[] words = line.split(",");
vars.put("timetorun",words[0]);
vars.put("users",words[1]);
log.info(words[1]);
log.info(users);
我尝试了一些 log.info 来检查这些值。为了words[1]我有从詹金斯发送的正确值:2。为了users显示的值为:void。
我尝试将它用于线程数:${__P(用户,1)}.
我究竟做错了什么?这些值显然来自 Jenkins,但我在将其传递给我的变量时遇到问题。谢谢
您没有名为的脚本变量users
,所以你应该记录words[0]
:
log.info(words[0]);
或者您可以记录名为 users 的 JMeter 变量的值:
log.info(vars.get("users"));
或者你可以分配words[0]
到称为变量users
:
String users = words[0];
log.info(users);
此外,您还将其保存为变量,而不是属性,因此您可以在脚本中的其他位置检索它,如下所示
${users}
语法__P
指属性,因此如果您想将其用作属性,则需要更改保存它的方式:
props.put("users", words[1]);
如果你这样做,${__P(users,1)}
应该管用
现在,如果您想使用该值作为线程数,那么您需要执行以下操作:
- 设置包含 1 个线程的线程组和您的脚本
- 在脚本中你must save
users
作为属性,否则它不会在线程之间传递
- 下一个线程组可以将其用作线程数
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)