sbha
sbha

Reputation: 617

Capture details from http request and response in jmeter

I am setting up a jmeter test plan for http requests and I want to create a table capturing some details from http request and response. I read http request from a file using CSV Data Set Config. My request and response formats are as follows

Http Request Format: {"TYPE":"<type>", "PAYLOAD": [<Array of data>]}

Http Response Format: {"RESPONSE":[<Array of data>]}

Things I want to capture for each request, response are TYPE from HTTP Request, Array Size of RESPONSE (or Array size of PAYLOAD) and Time Taken.

The jmeter version I am using is v5.2.1. Any inputs on how can I set this up?

Edit: My HTTP request is a POST request. I am looking to capture details from Request Body.

Upvotes: 0

Views: 2603

Answers (1)

Dmitri T
Dmitri T

Reputation: 168157

If you don't mind using JMeter Plugins you can:

  1. Declare the variables from the CSV file as Sample Variables

  2. Extract the number of matches from the response using JSON Extractor configured like:

    • Name of created variables: responsarray

    • JSON Path expressions: $.RESPONSE.*

    • Match Nr.: -1

      the variable value you need to declare in the Sample Variables will be responsearray_matchNr

  3. The above Sample Variables can be saved into a file using Flexible File Writer


If you cannot use the plugin you still can achieve the same using JSR223 Listener and the following Groovy code:

def result = new File('result.txt')

def request = new groovy.json.JsonSlurper().parseText(sampler.getArguments().getArgument(0).getValue())
def requestType = request.TYPE
def requestArray = request.PAYLOAD.size()

def response = new groovy.json.JsonSlurper().parse(prev.getResponseData())
def responseArray = response.RESPONSE.size()
def timeTaken = prev.getTime()

result << requestType << ',' << requestArray << ',' << responseArray << ',' << timeTaken << System.getProperty('line.separator')

Upvotes: 1

Related Questions