How to send multiple json body using jmeter?

人盡茶涼 提交于 2021-01-28 05:42:55

问题


I have written a REST API and now my requirement is to send the multiple JSON body to the API using POST method from JMeter. I have a csv file with four values(1,2,3,4). And in each of the four files I have the JSON body. I used :

Step-1) added the csv file to jmeter and create a reference and named it JSON_FILE

Step-2) ${__FileToString(C:Path_to_csv_file/${__eval(${JSON_FILE})}.txt,,)}

But from this I am able to access only first file i.e which is named with one. How do I send the body of all file to the API? Help is highly appreciated.


回答1:


You won't be able to use CSV Data Set Config as it will read the next value for each thread (virtual user) and/or Thread Group iteration.

If your requirement is to send all the files bodies at once you can go for an alternative approach

  1. Add JSR223 PreProcessor as a child of the HTTP Request sampler which you use for sending the JSON payload
  2. Put the following code into "Script" area:

    def builder = new StringBuilder()
    new File('/path/to/plans.csv').readLines().each { line ->
        builder.append(new File(line).text).append(System.getProperty('line.separator'))
    }
    sampler.getArguments().removeAllArguments()
    sampler.addNonEncodedArgument('', builder.toString(), '')
    sampler.setPostBodyRaw(true)
    

    the above code iterates through entries in plans.csv file, reads the file contents into a string and concatenates them altogether. Once done it sets the HTTP Request sampler body data to the generated cumulative string.

Check out The Groovy Templates Cheat Sheet for JMeter to learn more and what else could be achieved using Groovy scripting in JMeter.




回答2:


Use Body data as follows in HTTP Sampler:

{__FileToString(${JSON_FILE},,)}

You have to put all the file path in your plan.csv file. At each line, there should be a file path.

Example:

Suppose, you have 4 files with JSON body which you want to use in your HTTP sampler.

Give the file path of these 4 files in your CSV file which is plan.csv. Each line contains a file path like this:

/User/file/file1.json
/User/file/file2.json
/User/file/file3.json
/User/file/file4.json

Now, in your CSV data set config, Use the proper file name of CSV file which contains all the file path and give it a variable name like JSON_FILE.

Now, Use {__FileToString(${JSON_FILE},,)} this line in your Body data. Also use the loop count value accordingly.



来源:https://stackoverflow.com/questions/55235024/how-to-send-multiple-json-body-using-jmeter

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!