Groovy JMeter中的增量用户定义变量
我有一个注册REST服务要进行性能测试。对于每个循环/线程请求,只需更改必需的参数mobilenumber 作为负载测试的一部分,当线程化/循环到多个测试时,如何增加用户定义的变量(通过存储为另一个udv的增量值) 尝试为所有成功的注册请求使用jsr 233预处理器 我不想使用csv,因为我只有一个参数需要更改 我正在阅读有关var.get()和vars.put()函数的文章,这些函数可以使用,但不能正确地使用Groovy JMeter中的增量用户定义变量,groovy,jmeter,load-testing,jsr223,Groovy,Jmeter,Load Testing,Jsr223,我有一个注册REST服务要进行性能测试。对于每个循环/线程请求,只需更改必需的参数mobilenumber 作为负载测试的一部分,当线程化/循环到多个测试时,如何增加用户定义的变量(通过存储为另一个udv的增量值) 尝试为所有成功的注册请求使用jsr 233预处理器 我不想使用csv,因为我只有一个参数需要更改 我正在阅读有关var.get()和vars.put()函数的文章,这些函数可以使用,但不能正确地使用 正在尝试以下代码-下面显示的登录代码 log.info("Before execu
正在尝试以下代码-下面显示的登录代码
log.info("Before execution")
log.info("${mobileNumber}") // my udv mobileNumber
log.info("${increment}") // my udv increment value
inc = ${increment}
long number = Long.parseLong(vars.get("mobileNumber"))
number = number + inc
log.info("Incremented number")
log.info(String.valueOf(number))
vars.put("mobileNumber", String.valueOf(number))
log.info("After Execution")
log.info("${mobileNumber}")
日志:
2014/11/25 09:25:26 INFO - jmeter.threads.JMeterThread: Thread started: Dummy services 1-1
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: Before execution
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: 9990000000
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: 1000
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: Incremented number
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: 9990001000
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: After Execution
2014/11/25 09:25:26 INFO - jmeter.protocol.java.sampler.JSR223Sampler: 9990000000
2014/11/25 09:25:26 INFO - jmeter.threads.JMeterThread: Thread finished: Dummy services 1-1
根据日志,增量成功,但是vars.put()不成功???我通常使用BSFPre(Post)处理器+Groovy。在这种情况下,它看起来像
i = ${YOUR_UDV}
i += 1
vars.putObject("YOUR_UDV", i.toString())
如果给定的手机号码长度超过15位,则需要使用长Java类 假设您的UDV手机号码为“number”,您可以使用以下代码段:
long number = Long.parseLong(vars.get("number"));
number = number + 1;
vars.put("number", String.valueOf(number));
您也可以考虑使用JMIT函数生成任意长度的随机数(函数使用字符串表示)。p>
有关
vars
、ctx
和其他JMeter API对象向启用脚本的测试元素公开的更多信息,请参阅指南 如果要更新JMeter变量,则无法使用${varName}格式访问更新后的值(不确定原因)。我使用vars.get(“varName”}函数成功地获得了更新后的值
log.info("Before execution")
log.info("${mobileNumber}") // my udv mobileNumber
log.info("${increment}") // my udv increment value
inc = ${increment}
long number = Long.parseLong(vars.get("mobileNumber"))
number = number + inc
log.info("Incremented number")
log.info(String.valueOf(number))
vars.put("mobileNumber", String.valueOf(number))
log.info("After Execution")
log.info("${mobileNumber}")
log.info(vars.get("mobileNumber"))
日志:
用于帮助Dmtri和olyv的Thnaks通用公司长变量:
long number = Long.parseLong(vars.get(Parameters));
number = number + 1;
vars.put(Parameters, String.valueOf(number));
参数:变量名
我的脚本中缺少了一些内容,在问题中添加了详细信息。您的脚本运行良好,可能是JSR223采样器中存在问题。如果您在JSR223采样器之后添加调试采样器并查看结果树侦听器,您将看到您的
mobileNumber
变量增加。有关调试技术、提示和技巧,请参阅这与JMeter如何使用变量有关。我不是使用${varName}获取递增的值,而是使用vars.get(“varName”)获取它。可能是${}使用一些预填充的值用于线程。感谢您的帮助。只要手机号码是10位且不能匹配int,我就必须使用。尝试问题中更新的代码仍无法获得预期结果-请参阅更新的问题。
long number = Long.parseLong(vars.get(Parameters));
number = number + 1;
vars.put(Parameters, String.valueOf(number));