TL;博士 当我使用在正则表达式提取器中创建的变量时,我无法在随机变量中将其用作最大值
详细说明:
my_test
//echo.getpostman.com/get?test=${rand}
不幸的是,我收到来自随机变量的错误
2016/10/07 07:52:41 ERROR - jmeter.config.RandomVariableConfig: maximum(${my_test}) must be > minimum1)
为什么不评估my_test
?
我已经尝试了${__javaScript(parseInt('${my_test}'))}
但看起来它在我的变量初始化之前被评估了
2016/10/07 08:06:01 ERROR - jmeter.config.RandomVariableConfig: maximum(NaN) must be > minimum1)
如果我在用户定义的变量中的测试计划中初始化此变量,将使用该设置中的值 - 不会被正则表达式更新。
我知道我可以做//echo.getpostman.com/get?test=${__Random(0,${my_test})}
我很好奇如何将我的变量作为正则表达式提取器中最大值的值传递。
答案 0 :(得分:3)
随机变量是配置元素,它将在首先执行任何其他组件之前执行。
4.9执行顺序
- 配置元素
- 预处理器
- 计时器
- 取样
- 后处理器(除非SampleResult为空)
- 断言(除非SampleResult为空)
- 监听器(除非SampleResult为空)
醇>
如果测试计划中有两个或更多个Config元素,那么它们将按照它们在测试计划中出现的顺序执行。
在此处检查执行顺序和范围: 请参阅4.9 7 4.10 Execution Order and Scope Rules
因此,首先评估第一个随机变量,然后评估Sampler,然后评估正则表达式提取器。
当您使用用户定义变量(另一个配置元素)时,您可能将它放在随机变量之前,因此它已经为您定义了“my_test”的值来计算表达式。但它不会覆盖您在正则表达式提取器中捕获的值。
解决您的问题(一个可能的解决方案):
您可以使用不同的线程组。在第一个线程组中,您捕获值,在第二个线程组中,您使用值。
https://www.blazemeter.com/blog/knit-one-pearl-two-how-use-variables-different-thread-groups
答案 1 :(得分:0)
一种可能性是您可以使用Beanshell Postprocessor将RegEx值写入变量名称。 之后,您可以将其用作$ {variable_name}
注意:Beanshell函数vars.get可用于获取正则表达式值,而vars.put可用于将其放入变量中。
答案 2 :(得分:0)
似乎Random Variable元素不评估变量,可能值得在JMeter Issue Tracker中创建问题
作为一种解决方法,您可以直接用__Random()函数替换它,如:
find_sum(...)
- 如果您需要立即使用该值,请直接在您的网址中
resolve: {
resolveMap: function (MapService, $stateParams) {
return MapService.getData($stateParams.lat, $stateParams.lon).then(function (rsp){console.log(rsp); return rsp; }).catch(function (err){console.log(err);})
}
}
${__Random(1,${my_test},)}
- 如果您需要将值存储到//echo.getpostman.com/get?test=${__Random(1,${my_test},)}
变量中
请参阅: