Search code examples
jmeterhttprequest

pass http request response to use in others http requests in same thread group


I'm new using JMeter and I have this case:

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

And I want to use the response of HTTP req 1(extracted in JSON extractor) in both HTTP request 2 and 3. For request 2 is working fine I just use ${response} and works fine but when I try to user the same variable in request 3 is like is empty is not showing anything.

So I tried to put the BeanShell Assertion and do a var.set or even a set property, but is still not working. It is like the var or property is being set, and I can see them in HTTP req 2 but in HTTP req 3 they are empty.

Is there another way to set the variable or the response of the request 1 to be use in any other requests of the same thread?

Thanks


Solution

  • You need to amend your test design and make the JSON Extractor a child of the Http Request 1

    • Test Plan

      • Test Group1
        • HTTP Request 1

          • JSON Extractor
        • HTTP Request 2

        • HTTP Request 3

    If you have JSON Extractor at the same level as HTTP Requests 1-3 it's being executed after every of them so it tries to extract the value from HTTP Request 2 response, doesn't find it and the variable gets empty or default value.

    The same applies to the Beanshell Assertion.

    More information: JMeter Scoping Rules

    With regards to using Beanshell in general it's not very recommended, since JMeter 3.1 you should be using JSR223 Test Elements and Groovy language