jmeter 将http请求响应传递给同一线程组中的其他http请求使用

utugiqy6  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(254)

我刚开始使用JMeter,我有这样一个案例:

Test Plan
  Test Group1
   Http Request 1
   Json Extractor1
   BeanShell Assertion1
   Http Request 2
   Http Request 3

我想在HTTP请求2和3中使用HTTP请求1的响应(在JSON提取器中提取)。由于请求2运行正常,我只使用${response},运行正常,但当我尝试在请求3中使用相同的变量时,却好像是空的,没有显示任何内容。
所以我试着把BeanShellAssert和做一个var.set或者甚至一个set属性,但是仍然不起作用。这就像var或者属性正在被设置,我可以在HTTP req 2中看到它们,但是在HTTP req 3中它们是空的。
是否有其他方法将变量或请求1的响应设置为在同一线程的任何其他请求中使用?
谢谢

krugob8w

krugob8w1#

您需要修改测试设计,并使JSON提取器成为Http请求1的子级

  • 测试计划
  • 试验组1
  • HTTP请求1
  • JSON提取器
  • HTTP请求2
  • HTTP请求3

如果JSON Extractor与HTTP请求1-3处于同一级别,它会在每个请求后执行,因此它会尝试从HTTP请求2响应中提取值,但没有找到,变量将为空或默认值。
这同样适用于Beanshell声明。
更多信息:JMeter范围规则
关于使用Beanshell,一般不推荐使用,因为JMeter 3.1应该使用JSR223 Test Elements and Groovy language

相关问题