当前位置: 首页 > article >正文

jmeter 中 BeanShell 预处理程序、JSR223后置处理程序使用示例

 1. 各个组件如何新建的?

 2. "http请求" 组件内容样例:

 "消息体数据" 源码:

{
	"task_tag": "face_detect",
	"image_type": "base64",
	"extra_args": [{
		"model": "face",
		"param": {
			"similar_thres": 0.68,
			"filter_size": 140
		}
	}],
	"images": ["${imageBase64}"]
}

 3. "http信息头管理器" 内容样例:

 4. "BeanShell PreProcessor"

 源码:

import org.apache.commons.codec.binary.Base64;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

String randomNum = "${__Random(1,5)}";
// 图片文件路径
String imagePath = "D:/xxx_jmeter_test/003人脸识别/张三/"+ randomNum +".jpg";
InputStream in = null;
try {
    // 读取图片文件
    in = new FileInputStream(imagePath);
    byte[] fileBytes = new byte[in.available()];
    in.read(fileBytes);
    in.close();
 
    // 转换为Base64编码
    byte[] base64Bytes = Base64.encodeBase64(fileBytes);
    String base64String = new String(base64Bytes);
 
    // 将Base64编码设置到变量中
    vars.put("imageBase64", base64String);
} catch (Exception e) {
    e.printStackTrace();
    throw new RuntimeException("Error reading or converting the image: " + e.getMessage());
}finally {
  if( in != null ){
      try {
          in.close();
      }catch ( Exception e ){
          e.printStackTrace();
      }
  }
}

 5. "JSR223 PostProcessor" 内容示例:

源码: 

import groovy.json.JsonSlurper

// 获取响应数据作为字符串
String responseData = prev.getResponseDataAsString()

// 解析 JSON 字符串
def json = new JsonSlurper().parseText(responseData)

// 检查 code 属性的值是否为 "500"
if (json.code == "500") {
    // 抛出取样器错误
    prev.setSuccessful(false) // 标记取样器为失败
    prev.setResponseMessage("data attribute is 'error'") // 设置错误消息
    // 可选:设置响应码(如果你想要的话)
    // prev.setResponseCode("500") // 这通常不是必需的,因为响应码应该由服务器设置
    
    // 抛出异常来结束当前线程(注意:这会影响报告)
    // 如果你不想在报告中看到异常,你可以只设置 prev 的状态而不抛出异常
    // 但是,不抛出异常可能不会立即停止线程的执行
    //throw new RuntimeException("Sample error due to 'data' attribute being 'error'.")
}

默认情况在,在 "查看结果树"、"统计报告" 中只有 http 请求层面的错误才被当做失败,但是在实际开发中,无论实际是成功还是失败,http 层面的 code 都是返回 200,而是在响应内容中的 json 中有额外的业务 code = 500 等来标识错误,但是却不会体现在  "查看结果树"、"统计报告"  中的失败条目中,这时可以在 JSR223 后置处理程序中编写脚本来提取出响应业务数据 json 中的错误码,进而强制标记取样器为失败。

6. 线程组:

一个线程组下面可以新建多个 "http 请求"( 鼠标右键 "线程组" --> 添加 --> 取样器 --> http 请求 ) ,然后设置线程数、循环次数等,表示 jmeter 会启动这么些个线程循环这么些个次数来请求该线程组下面的 http 接口


http://www.kler.cn/a/470653.html

相关文章:

  • 并行云使用流程
  • 虚表 —— 隐藏行(简单版)
  • 十年后LabVIEW编程知识是否会过时?
  • Python递归(汉诺塔问题)
  • 统计字符【2】(PTA)C语言
  • 通过爬虫方式实现视频号助手发布视频
  • 【Spring Boot】统一数据返回
  • 『SQLite』表连接查询
  • iPhone升级iOS18黑屏?2025最新修复办法分享
  • docker学习记录:commit,制作自己的镜像
  • SSL,TLS协议分析
  • 深度学习在网络拓扑优化中的应用:智能化网络管理的新前沿
  • R语言基础| 中级绘图
  • CCNP_SEC_ASA 第七天作业
  • 使用Python实现网络安全攻击检测系统
  • 进制转换(蓝桥杯)
  • 【C/C++】Protobuf与nlohmann/json的比较
  • 【Uniapp-Vue3】常用的表单组件button和input
  • SpringBoot2 如何集成OpenAPI
  • 麒麟操作系统服务架构保姆级教程(八)数据库拆分静态业务拆分和负载均衡
  • dockerignore文件怎么写
  • iOS - AutoreleasePoolPage 节点为空时的处理逻辑
  • 使用Node编写服务器接口
  • 新型大数据架构之湖仓一体(Lakehouse)架构特性说明——Lakehouse 架构(一)
  • uniapp使用canvas生成订单小票图片
  • 【STM32】点击下载按钮时,提示No ST-LINK detected