我刚开始使用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的响应设置为在同一线程的任何其他请求中使用?
谢谢
1条答案
按热度按时间krugob8w1#
您需要修改测试设计,并使JSON提取器成为Http请求1的子级
如果JSON Extractor与HTTP请求1-3处于同一级别,它会在每个请求后执行,因此它会尝试从HTTP请求2响应中提取值,但没有找到,变量将为空或默认值。
这同样适用于Beanshell声明。
更多信息:JMeter范围规则
关于使用Beanshell,一般不推荐使用,因为JMeter 3.1应该使用JSR223 Test Elements and Groovy language