How to save response in a variable in jmeter

后端 未结 4 1293
無奈伤痛
無奈伤痛 2021-02-13 16:56

I am performing load testing on my server using jmeter. In one of my post requests, I receive a unique id in the response. I need to send this id as a parameter in the following

相关标签:
4条回答
  • 2021-02-13 17:13

    If you need to store the whole response into a variable - take the following steps:

    1. Add Beanshell PostProcessor as a child of the request which returns response you're looking for
    2. Put the following line into the PostProcessor's "Script" area:

      vars.put("response", new String(data));
      
    3. Refer extracted value as ${response} where required

      See How to Use BeanShell: JMeter's Favorite Built-in Component guide to lean more about Beanshell scripting in JMeter


    Alternatively you can do the same with the Regular Expression Extractor, in that case relevant configuration will be:

    • Reference Name: response
    • Regular Expression: (?s)(^.*)
    • Template: $1$

    If you need a part of response, not the whole response you can amend Regular Expression according to your needs as per Regular Expressions chapter of JMeter's User Manual

    0 讨论(0)
  • 2021-02-13 17:19

    I know this question is old but I agree with @UBIK you should probably use a JSON extractor. I am working with a load test that is sending over 100 requests per second and I need to reuse the value in a specific JSON key, so I'm using a JSON extractor and saving the values in a .csv file to be used by the next request.

    1. extract the JSON


    2. This is the Groovy script to write it to a .csv file

     def myRandomIds = new File("randomIds.csv")
        myRandomIds << vars.get("id") + ","
        myRandomIds << System.getProperty("line.separator")
        log.info(vars.get("id") + " saved to randomIds.csv...")
    

    1. This is the CSV data config I have set up in my other request that is reading from the csv file. (In my case these .jmx files are automated and parametized using jenkins)


    2. CSV data set config


    0 讨论(0)
  • 2021-02-13 17:32

    If you really need to store the whole response into a variable, do the following:

    1. Add JSR223 PostProcessor as a child of the request which returns response you're looking for

    1. Put the following line into the "Script" area:

    vars.put("response", prev.getResponseDataAsString());

    1. Use then this response as ${response} where you need it

    But you rarely need to use the whole response and you should avoid it for big , in this case it is much better to use the Extractor that suits your response format:

    • JSON Extractor for JSON
    • CSS/JQuery Extractor for HTML extraction
    • XPath Extractor for XML
    • Regular Expression Extractor for all of them or any textual format
    0 讨论(0)
  • 2021-02-13 17:36

    You can use JMeter's Post-Processor Regular Expression Extractor to extract the required value from response. Just Add this under the sampler whose response will contain the required value.

    In Reg expression extractor, you will define the variable name (referenceName), RegularExpression, template etc. Later you can use the value in this variable. To learn how to use Reg expression extractor you can refer to following tutorial.

    https://docs.blazemeter.com/customer/portal/articles/1743642-using-regex-regular-expression-extractor-with-jmeter

    0 讨论(0)
提交回复
热议问题