如何从第一个请求中定义的相同属性获取所有值,以便在下一个请求jmeter中使用?

时间:2017-08-23 02:57:27

标签: xml soap groovy jmeter

我在第一个线程中使用Regular Expression和JSR223 PostProcessor。这是我的正则表达式:

enter image description here

这是我的JSR223 PostProcessor:

${__setProperty(npwp,${__property(npwp)})}; // Define NPWP variable

我在第二个帖子中使用SOAP / XML-RPC请求:

enter image description here

我使用${__property(npwp)}来获取npwp的值。

如果我使用Number of Thread = 2设置第一个和第二个线程组,如何获取来自同一属性的所有值?

2 个答案:

答案 0 :(得分:3)

以下是我的问题的解决方案:

  • 使用属性非变量,因为变量是线程的本地

  • 在测试计划中检查连续运行线程组(一次运行一个组)

enter image description here

因为如果你不检查它,它仍将使用前一个执行/运行中的值。有时可能会发生线程组2将在线程组1之前运行,因此线程组2的变量未设置

然后定义测试计划:

  • 线程组1
    • SOAP / XML-RPC请求
      • 正则表达式提取器
      • JSR223 PostProcessor
      • 计数器
    • 调试采样器
  • 线程组2
    • SOAP / XML-RPC请求
      • 正则表达式提取器
      • JSR223 PostProcessor
      • 计数器
    • 调试采样器

以下是每个测试计划的详细信息:

  • 在线程组1和线程组2
  • 中设置线程数(用户)= 3

enter image description here

  • 在SOAP / XML-RPC请求中设置属性npwp ${__property(npwp${counter})}

enter image description here

  • 设置正则表达式提取器

enter image description here

  • 设置JSR223 PostProcessor

enter image description here

  • 设置计数器

enter image description here

  • 结果

enter image description here

  • Npwp 1:48482

enter image description here

  • Npwp 2:54270

enter image description here

  • Npwp 3:48454

enter image description here

答案 1 :(得分:0)

不要在Groovy脚本中以${something}的形式内联JMeter函数或变量:

  1. 它不安全,因为函数或变量可能会导致某些Groovy代码可能会执行您不想要的操作
  2. Groovy Templates发生冲突,因此无法在任何地方使用
  3. 它打破了Groovy killer script compilation and caching feature,使您的脚本性能成为一个大问号
  4. 你的__setProperty()函数代码不正确,它应该是这样的:

     ${__setProperty(npwp,${npwp},)}
    
  5. 如果您只想使用Groovy方式,相关代码将类似于:

    props.put('npwp', vars.get('npwp'))
    
  6. 有关JMeter测试中Groovy脚本的更多信息,请参阅Apache Groovy - Why and How You Should Use It