从 jmeter 中的 http 请求和响应中捕获详细信息

Capture details from http request and response in jmeter

我正在为 http 请求设置一个 jmeter 测试计划,我想创建一个 table 从 http 请求和响应中捕获一些细节。我使用 CSV 数据集配置从文件中读取 http 请求。我的请求和响应格式如下

Http 请求格式:{"TYPE":"<type>", "PAYLOAD": [<Array of data>]}

HTTP 响应格式:{"RESPONSE":[<Array of data>]}

我想为每个请求、响应捕获的内容是来自 HTTP 请求的类型、响应的数组大小(或有效负载的数组大小)和所用时间。

我使用的jmeter版本是v5.2.1。关于如何设置的任何输入?

编辑:我的 HTTP 请求是 POST 请求。我希望从请求正文中获取详细信息。

如果您不介意使用 JMeter 插件,您可以:

  1. 将 CSV 文件中的变量声明为 Sample Variables

  2. 使用 JSON 从响应中提取匹配项的数量配置如下:

    • 创建的变量名称:responsarray

    • JSON 路径表达式:$.RESPONSE.*

    • 匹配编号:-1

      您需要在示例变量中声明的变量值为 responsearray_matchNr

  3. 以上示例变量可以使用Flexible File Writer

    保存到文件中

如果您不能使用该插件,您仍然可以使用 JSR223 Listener and the following Groovy 代码实现同样的效果:

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')