文章介绍了在JMeter中,如何使用BeanShellPostProcessor结合prev对象对接口响应进行处理。prev对象提供了访问前一次采样结果的方法,如获取请求头、响应码、响应内容等。同时,文章解释了Content-Type头字段的组成部分——媒体类型和字符集,以及SamplerData代表的RequestBody内容。 摘要由CSDN通过智能技术生成

有时候需要在BeanShell PostProcessor中,对接口响应进行一些判断或处理,这时就需要用到Jmeter的prev对象来做一些操作。

  • prev 在JMeter中是一个对象,它代表了前一次采样结果的各种信息,可以通过它获取前一次采样结果的响应时间、响应码、响应内容等等
  • prev对象 属于SampleResult类,映射的是org.apache.jmeter.samplers.SampleResult
  • prev 用于后置处理器、断言

其常用的一些方法有:

String requestHeaders= prev.getRequestHeaders(); //获取请求头
String urlString= prev.getUrlAsString(); //获取URL
String responseCode= prev.getResponseCode(); //获取响应码
String responseHeaders= prev.getResponseHeaders(); //获取响应头
String contentType= prev.getContentType(); //获取响应体类型
String dataType= prev.getDataType(); //获取DataType
String mediaType= prev.getMediaType(); //获取Content Type中的media type
byte[] responseData=prev.getResponseData(); //获取响应体的字节流
String responseDataString=prev.getResponseDataAsString(); //获取响应体字符串
String samplerData= prev.getSamplerData(); //获取请求内容

1、关于 Data Type、Content Type、MediaType的说明 

Content-Type是HTTP协议中的一个头部字段,用于标识请求或响应中所携带的实体的类型。

它由两部分组成,分别是媒体类型(Media Type)和字符集(Charset):

  • 媒体类型:用于描述当前实体的类型。常用的媒体类型包括text、image、audio、video等,具体的可以参考IANA的媒体类型注册表。
  • 字符集:用于描述当前实体所使用的字符编码。常用的字符集有UTF-8、GB2312、ISO-8859-1等。

2、关于 SamplerData的说明:

SamplerData对应结果中Request Body中的整个内容

 > 更多的信息,如增加或设置相关内容,可以查看Jmeter的官方在线文档:
SampleResult (Apache JMeter dist API)

> 或者查看本地Jmeter安装目录下的docs\api的接口文档

最近测了几个前端的项目,发现它们都有一个共同点:应用所在服务器的网卡上行(trans)非常大——经常是 117 MB/S,这已经逼近了千兆网卡的极限了。下面记录下排查和解决过程: 一. jmeter 客户端启用gzip压缩 1. 使用jmeter的查看结果树,发现单次请求的返回都在 220KB以上 2. 查看应用的nginx服务器配置,发现已经启用gzip压缩,那问题是在哪里呢?
Http接口返回的数据,一般都是json格式的,如果需要提取出其中的某个数据,作为后续其他接口的入参,那么可以使用json提取器。 从接口中提取一个数据 以登录接口为例,当登录成功后接口会返回一个token,如下图所示这样的,后续其他接口会使用该token作为header入参使用 那么在jmeter的http请求下,新添加一个json提取器 json提取器中进行如下配置: 其中$,代表根元素 其中$.data.id,就代表我要获取到的参数 将获取到的值赋给变量token,那么后续的接口中就可以使用${
long endTime = System.currentTimeMillis(); long responseTime = endTime - vars.get("startTime"); vars.put("responseTime", String.valueOf(responseTime)); 该脚本将获取当前时间的毫秒数并将其存储在变量endTime中,然后将响应时间计算为endTime减去startTime,并将其存储在变量responseTime中。最后,将responseTime存储在JMeter变量中,以便在测试报告中使用。 5. 最后,在你的JMeter计划中添加一个Summary Report元素,并选择要包含在报告中的响应时间变量。 这样,你就可以使用BeanShell来处理JMeter响应时间。 Pipeline 方式获取分支列表 代码URL得加上账号密码才行,要不它没登录找不到 parameters { gitParameter branch: '', branchFilter: '.*', defaultValue: 'origin/master', name: 'branch', quickFilterEnabled: false, selectedValue: 'NONE', sortMode: 'NONE', tagFilter: '*', type: 'GitParameterDefinition', useRepository: 'https://账号:密码@gitee.com/xxx/xxx.git'