Jmeter 默认是不记录请求和响应的具体信息的,虽然可以记录下响应数据。然而,仍然没有直接的办法记录请求的数据。本文将探索如何做到记录请求数据到文件。
本文使用的 Jmeter 是 4.0 版本
对象及用途
SamplerResult
和 prev
对象都可以用于记录请求-响应中一系列信息,也就是在 View Results Tree
中观察到的信息。它们的接口是相同的,但是所属的元件有不同。SamplerResult
仅用于 JSR223 Sampler,而 prev
仅用于 JSR223 PreProcessor.
所以下面的做法,同时适用于 SamplerResult
和 prev
.
下面我们用 Dummy Sampler 模拟请求响应,尝试记录请求的信息,脚本如下。
Test Plan
└─ Thread Group
├─ jp@gc - Dummy Sampler
│ └─ JSR223 PostProcessor
│
└─ View Results Tree
在 JSR223 PostProcessor 中填入不同的代码,就能在 View Results Tree 中看到结果
获取响应信息
从 View Results Tree 的结果可以看到许多与请求、响应相关的信息,比如下图:
我们尝试在 JSR223 PostProcessor 的文本框中填入不同的语句,执行脚本,观察控制台中看到对应的 log 日志。比如:
log.info("Thread Name: " + prev.getThreadName());
就能得到:
我们继续在 JSR223 PostProcessor 的文本框中填入下面的语句,就能得到其他的关于响应的信息:
// 开始采样时间
log.info("Sample Start: " + (new Date(prev.getStartTime())).toString());
// 当前 Sampler 的加载时间,单位 ms
log.info("Load Time: " + prev.getTime().toString());
// 连接时间,单位 ms
log.info("Connect Time: " + prev.getConnectTime().toString());
// 延时
log.info("Latency: " + prev.getLatency().toString());
// 响应中的字节数
log.info("Size in bytes: " + prev.getBytesAsLong().toString());
// 发送的字节数
log.info("Sent bytes: " + prev.getSentBytes().toString());
// 响应 header 的字节数
log.info("Header size in bytes: " + prev.getHeadersSize().toString());
// 响应 body 的字节数
log.info("Body size in bytes: " + prev.getBodySizeAsLong().toString());
// 合并 Sample 个数
log.info("Sample Count: " + prev.getSampleCount().toString());
// 发生错误个数
log.info("Error Count: " + prev.getErrorCount().toString());
// 返回数据格式
log.info('Data type("text"|"bin"|""): ' + prev.getDataType().toString());
// 响应状态码
log.info("Response Code: " + prev.getResponseCode().toString());
// 响应消息
log.info("Response Message: " + prev.getResponseMessage().toString());
// 响应的Header
log.info("Response Header: " + prev.getResponseHeaders().toString());
// 响应的内容类型
log.info("ContentType: " + prev.getContentType().toString());
// 响应的数据编码
log.info("DataEncoding: " + prev.getDataEncodingNoDefault().toString());
就能得到 View Results Tree 中第一个标签(Sampler result)看到的结果。
获取请求内容
View Results Tree 中第二个标签( Request )看到的请求,可以用下面的函数获得:
// 获取请求内容
log.info("Request: " + prev.getSamplerData());
获取响应内容
View Results Tree 中第三个标签( Response Data )看到的请求,可以用下面的函数获得:
// 获取请求内容
log.info("Response: " + prev.getResponseDataAsString());
如果您对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
精彩评论
本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/jmeter-save-sampler/ ,且不得用于商业用途。