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

news2025/1/9 12:26:02

 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.coloradmin.cn/o/2273787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)

电脑32位和64位之区别 很多小伙伴还不知道电脑32位和64位是什么意思,今天小编就来普及一下。 32位和64位是指电脑处理器(CPU)和操作系统的架构,决定了电脑如何处理数据、存储信息、运行程序等。 32位和64位是指电脑系统中每个处…

vue -关于浏览器localstorge数据定期清除的实现

1.实现背景 用户登录时的信息存在了localstorge中,但它会一直存在。一般来说,我们希望这个数据能够定期被清除掉,以下一个定时清除的实现。 2.实现原理 在用户登录时,将用户信息存入localstorge的同时,将当前时间作…

【JavaEE进阶】获取Cookie/Session

🍀Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…

【工具变量】统计行业锦标赛激励数据集(2008-2023年)

一、数据简介 坚持创新驱动发展,要强化企业创新主体地位,发挥企业家在技术创新中的重要作用。作为企业组织内部最具有影响力的角色,高级管理人员拥有企业经营管理的自由裁量权,对企业战略决策及由此产生的经营绩效具有举足轻重的…

UVM: TLM机制

topic overview 不建议的方法:假如没有TLM TLM TLM 1.0 整个TLM机制下,底层逻辑离不开动作发起者和被动接受者这个底层的模型基础,但实际上,在验证环境中,任何一个组件,都有可能成为动作的发起者&#xff0…

Scratch023-(沙漠变绿洲)

提示: 知识回顾: 1、画笔的各个属性 2、“将笔的颜色设为”积木 3、“将笔的颜色增加”积木 文章目录 前言一、案例展示二、功能分析三、步骤拆解1.背景角色和画笔的初始化(1)初始化画笔2、一起绘制一个小雨滴3、绘制多个随机的小…

游戏语音趋势解析,社交互动有助于营造沉浸式体验

语音交互的新架构出现 2024 年标志着对话语音 AI 取得了突破,出现了结合 STT → LLM → TTS 模型来聆听、推理和回应对话的协同语音系统。 OpenAI 的 ChatGPT 语音模式将语音转语音技术变成了现实,引入了基于音频和文本信息进行端到端预训练的模型&…

详细全面讲解C++中重载、隐藏、覆盖的区别

文章目录 总结1、重载示例代码特点1. 模板函数和非模板函数重载2. 重载示例与调用规则示例代码调用规则解释3. 特殊情况与注意事项二义性问题 函数特化与重载的交互 2. 函数隐藏(Function Hiding)概念示例代码特点 3. 函数覆盖(重写&#xff…

计算机网络之---物理层设备

什么是物理层设备 物理层设备是指负责数据在物理媒介上传输的硬件设备,它们主要处理数据的转换、信号的传输与接收,而不涉及数据的内容或意义。常见的物理层设备包括网卡、集线器、光纤收发器、调制解调器等。 物理层设备有哪些 1、网卡(N…

js状态模式

允许一个对象在其内部状态改变时改变它的行为。 状态模式将对象的状态封装成独立的类,并使它们可以互相转换 // 定义状态接口class State {constructor() {if (this.constructor State) {throw new Error(不能实例化抽象类);}}// 定义状态方法handle(context) {th…

平面坐标转大地坐标(arcgisPro中进行)

1、将需要转换的红线导入arcgisPro中,如下: 2、在地图菜单栏中,选择坐标转换工具,如下: 3、打开坐标转换工具 4、开启捕捉 5、 设置大地坐标显示格式 6、如下: 7、显示如图: 8、再依次添加几个待…

(长期更新)《零基础入门 ArcGIS(ArcScene) 》实验七----城市三维建模与分析(超超超详细!!!)

城市三维建模与分析 三维城市模型已经成为一种非常普遍的地理空间数据资源,成为城市的必需品,对城市能化管理至关重要。语义信息丰富的三维城市模型可以有效实现不同领域数据与IS相信息的高层次集成及互操作,从而在城市规划、环境模拟、应急响应和辅助决策等众多领域公挥作用、…

SpringBootWeb 登录认证(day12)

登录功能 基本信息 请求参数 参数格式:application/json 请求数据样例: 响应数据 参数格式:application/json 响应数据样例: Slf4j RestController public class LoginController {Autowiredpriva…

夯实前端基础之HTML篇

知识点概览 HTML部分 1. DOM和BOM有什么区别? DOM(Document Object Model) 当网页被加载时,浏览器会创建页面的对象文档模型,HTML DOM 模型被结构化为对象树 用途: 主要用于网页内容的动态修改和交互&…

UI自动化测试保姆级教程--pytest详解(精简易懂)

欢迎来到啊妮莫的学习小屋 别让过去的悲伤,毁掉当下的快乐一《借东西的小人阿莉埃蒂》 简介 pytest是一个用于Python的测试框架, 支持简单的单元测试和复杂的功能测试. 和Python自带的UnitTest框架类似, 但是相比于UnitTest更加简洁, 效率更高. 特点 非常容易上手…

有序数据中插入不确定数据保证数据插入的位置顺序正确排序

解决有序数据中插入不确定数据保证数据插入的位置顺序正确排序 前言 java 数据库中存储自增id 有序的数据, 前端页面基于 id 5和 6 之间新增一条数据,在 id 6 和 7之间新增 2条,或者更复杂的场景,后台接口如何保存数据使得页面数…

基于 Apache Commons Pool 实现的 gRPC 连接池管理类 GrpcChannelPool 性能分析与优化

基于 Apache Commons Pool 实现的 gRPC 连接池管理类 GrpcChannelPool 性能分析与优化 1. 输出关键信息的代码示例 日志记录方法 使用以下代码记录连接池的关键信息,帮助分析连接池的状态和性能瓶颈: import org.apache.commons.pool2.impl.GenericO…

不同方式获取音频时长 - python 实现

DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(free)” -------------------------------------------------------------…

在 C# 中显示动画 GIF 并在运行时更改它们

您可以通过将按钮、图片框、标签或其他控件的Image属性设置为 GIF 文件 来显示动画 GIF 。(如果您在窗体的BackgroundImage属性中显示一个,则不会获得动画。) 有几种方法可以在运行时更改 GIF。 首先,您可以将 GIF 添加为资源。…

Element-plus、Element-ui之Tree 树形控件回显Bug问题。

需求&#xff1a;提交时&#xff0c;需要把选中状态和半选中状态 的数据id提交。如图所示&#xff1a; 数据回显时&#xff0c;会出现代码如下&#xff1a; <template><el-tree ref"treeRef" :data"data" show-checkbox node-key"id" …