Variables JMeter随机变量元素无法识别上一步中的变量

Variables JMeter随机变量元素无法识别上一步中的变量,variables,jmeter,Variables,Jmeter,tl;博士 当我使用在正则表达式提取器中创建的变量时,我不能在随机变量中使用它作为最大值 详细说明: 我的测试结构: 我有变量my_test在正则表达式提取器中装箱的内容 请求:GET//echo.getpostman.com/GET?test=123 正则表达式: 然后我希望它在正则表达式提取器中用作最大值 所以最后我可以提出请求: //echo.getpostman.com/get?test=${rand} 不幸的是,我从随机变量 2016/10/07 07:52:

tl;博士 当我使用在正则表达式提取器中创建的变量时,我不能在随机变量中使用它作为最大值

详细说明:

  • 我的测试结构:
  • 我有变量
    my_test
    正则表达式提取器中装箱的内容
    • 请求:GET
      //echo.getpostman.com/GET?test=123
    • 正则表达式:
  • 然后我希望它在正则表达式提取器中用作最大值
  • 所以最后我可以提出请求:
    • //echo.getpostman.com/get?test=${rand}
不幸的是,我从随机变量
2016/10/07 07:52:41错误-jmeter.config.RandomVariableConfig:最大值(${my_test})必须大于最小值1)

为什么不评估我的测试

我已经尝试了
${uuujavascript(parseInt('${myu test}'))}
,但它看起来是在变量初始化之前进行计算的
2016/10/07 08:06:01错误-jmeter.config.RandomVariableConfig:最大值(NaN)必须大于最小值1)

如果我在测试计划中初始化此变量,则将使用该设置中的值,而不是由正则表达式更新

我知道我可以做
//echo.getpostman.com/get?test=${{uu Random(0,${myu test}}}


我只是好奇如何在正则表达式提取器中将变量作为最大值传递给

一种可能性是您可以使用Beanshell后处理器将正则表达式值写入变量名。 之后,您可以将其用作${variable\u name}

注意:Beanshell函数vars.get可用于获取regex值,vars.put可用于将其放入变量。

元素似乎不计算变量,也许值得在中创建一个问题

作为一种解决方法,您可以在需要时直接用函数替换它,如:

  • ${{uu Random(1,${my\u test},)}
    -如果您需要立即输入值,请直接在URL中输入:

    //echo.getpostman.com/get?test=${__Random(1,${my_test},)}
    
  • ${{uu Random(1,${my\u test},rand)}
    -如果需要将值存储到
    ${rand}
    变量中

见:

  • 文章提供了有关此JMeter函数和其他JMeter函数的扩展信息
  • -有助于生成正确函数语法的实用程序

随机变量是一个配置元素,它将首先执行,然后再执行任何其他组件

4.9执行令

  • 配置元素
  • 预处理器
  • 计时器
  • 采样器
  • 后处理器(除非SampleResult为空)
  • 断言(除非SampleResult为空)
  • 侦听器(除非SampleResult为空)
  • 如果测试计划中存在两个或多个配置元素,则将按照它们在测试计划中出现的顺序执行它们

    检查此处的执行顺序和范围: 参见此处的4.9 7 4.10

    所以,首先计算第一个随机变量,然后是采样器,然后是正则表达式提取器

    当您使用用户定义的变量(这是另一个配置元素)时,您可能会将其放在随机变量之前,因此它会像您已经为“my_test”定义了值一样计算表达式。但它不会覆盖您在正则表达式提取器中捕获的值

    要解决您的问题(一个可能的解决方案):

    您可以使用不同的线程组。在第一个线程组中,您捕获值,在第二个线程组中,您使用值

  • 连续运行线程组
  • 使用BeanShell断言通过setProperty捕获值。(在第一个线程组中)
  • 使用_属性()使用值(在线程组中)