首页 > 其他分享 >JMeter:处理 HTTP 请求失败并标记为成功

JMeter:处理 HTTP 请求失败并标记为成功

时间:2025-01-17 10:34:38浏览次数:1  
标签:JMeter HTTP 请求 标记 errorMessage 错误信息 error prev

JMeter:处理 HTTP 请求失败并标记为成功

重要提示: 通常情况下,不建议 将失败的请求标记为成功。明确知道需要这样做,并且已经充分考虑了其影响的情况下,才应该使用这种方法。常见的使用场景包括:

  • 测试应用的容错能力: 测试应用程序在 API 接口不可用时的行为。
  • 暂时忽略某些已知错误: 在开发或调试阶段,暂时忽略某些已知的问题,以便专注于其他功能的测试。

核心思想: 使用后置处理器(PostProcessor)捕获请求的失败状态,并手动将其修改为成功。

HTTP 请求处理:

  1. HTTP Request Sampler: 按照正常方式配置你的 HTTP 请求,包括 URL、请求方法、请求参数等。

  2. JSR223 PostProcessor (强烈推荐使用 Groovy): 在 HTTP Request Sampler 下添加一个 JSR223 PostProcessor-Groovy

    if (!prev.isSuccessful()) { // 检查前一个 sampler 是否失败
        def errorMessage = prev.getErrorMessage() // 获取原始错误信息
        log.error("Original HTTP request error: " + errorMessage) // 记录原始错误信息到 JMeter 日志
    
        prev.setSuccessful(true) // 将请求标记为成功
        prev.setResponseCode("200") // 设置响应代码为 200 OK,或者其他你认为合适的成功代码
        prev.setResponseMessage("HTTP request failed but marked as successful. Original error: " + errorMessage) // 设置自定义响应消息,包含原始错误信息
        prev.setResponseData("{\"status\":\"success\",\"message\":\"HTTP operation failed but handled gracefully. Original error: " + errorMessage + "\"}", "UTF-8") // 设置自定义响应数据 (JSON 格式),包含原始错误信息
    }
    

    代码详细解释:

    • !prev.isSuccessful():这是判断前一个 sampler 是否失败的有效方法。它会检查各种可能的失败原因,包括网络错误、连接超时、响应代码非 2xx、断言失败等。
    • def errorMessage = prev.getErrorMessage():获取原始的错误信息。务必使用 log.error() 将此信息记录到 JMeter 日志中。 这很重要,因为即使你将请求标记为成功,你也需要在日志中保留原始的错误记录,以便后续分析和排查问题。
    • prev.setSuccessful(true):将前一个 sampler 标记为成功,将 sampler 的状态修改为成功,监听器中显示红色失败标记。
    • prev.setResponseCode("200"):设置响应代码为 200 OK。你可以根据实际情况设置其他合适的成功代码。
    • prev.setResponseMessage(...):设置自定义的响应消息。建议包含原始错误信息,以便在“查看结果树”中查看请求被标记为成功的原因。
    • prev.setResponseData(...):设置自定义的响应数据。建议使用 JSON 格式,方便解析和处理。同样,建议包含原始错误信息。

BeanShell PostProcessor (不推荐,但可用):

如果你使用 BeanShell,代码如下:

if (!prev.isSuccessful()) {
    String errorMessage = prev.getErrorMessage();
    log.error("Original HTTP request error: " + errorMessage);

    prev.setSuccessful(true);
    prev.setResponseCode("200");
    prev.setResponseMessage("HTTP request failed but marked as successful. Original error: " + errorMessage);
    prev.setResponseData("{\"status\":\"success\",\"message\":\"HTTP operation failed but handled gracefully. Original error: " + errorMessage + "\"}", "UTF-8");
}

标签:JMeter,HTTP,请求,标记,errorMessage,错误信息,error,prev
From: https://www.cnblogs.com/yimouz-219/p/18676413

相关文章

  • https证书一键自动续期,帮你解放90天限制
    前言前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手。项目如下acme.sh。期间由于"墙"的原因,踩了很多的坑,此文记录一下踩坑的过程,同时也帮助我们"墙内"的程序员,不需要踩不必要的坑。1、安装acme.sh脚本官网......
  • 【Linux性能】如何在 Linux 中优雅地让 HTTP 请求超时?
    在Linux系统中,优化HTTP请求的性能和可靠性是每个系统管理员和开发者的必备技能之一。特别是当你在处理大量HTTP请求时,合理设置超时可以有效防止资源被长时间占用、提高系统性能,并避免潜在的安全风险。本篇文章将带你深入探讨如何在Linux中设置HTTP请求超时,逐步揭示各种......
  • https证书一键自动续期,帮你解放90天限制
    前言前几天网站证书到期,发觉证书颁发每次只能90天有效期,这谁能忍受,于是乎发觉网上有免费的一键续期脚本,真正解放我们的双手。项目如下acme.sh。期间由于"墙"的原因,踩了很多的坑,此文记录一下踩坑的过程,同时也帮助我们"墙内"的程序员,不需要踩不必要的坑。1、安装acme.sh脚本官网......
  • HTTPS与VPN:保护互联网用户的不同方法
    HTTPS是什么?HTTPS(超文本传输安全协议)是一种用于网络浏览器与网站之间通信的安全连接协议。它通过TLS(传输层安全)协议来加密用户和站点之间的数据交换,确保信息的安全性和完整性。此外,HTTPS还进行身份验证,以确认双方的真实身份,并确保传输的数据未被篡改。数据加密:HTTPS使用TLS......
  • 【浏览器】录音open失败:浏览器禁止不安全页面录音,可开启https解决..
    谷歌浏览器在浏览器地址栏中输入:chrome://flags/#unsafely-treat-insecure-origin-as-secure启动选项,并且添加你本地的开发地址Edgeedge://flags/#unsafely-treat-insecure-origin-as-secure操作同谷歌火狐浏览器在浏览器地址栏输入:about:config勾选(当我尝试修改底层首......
  • HTTPS与HTTP:区别及安全性对比
    目录一、基础概念二、安全性对比1.加密传输2.身份验证3.数据完整性4.端口5.浏览器展示方式三、使用场景与性能1.使用场景2.性能开销四、成本与维护五、搜索引擎优化(SEO)六、案例分析七、隐私保护与中间人攻击八、兼容性与开发调试九、政策与合规性十、......
  • JAVA-Exploit编写(5)--http-request库使用
    目录1.http-request简介2.依赖导入3.GET请求方式3.1test.php3.2基本使用代码实现 3.2请求时请求参数URL编码实现 3.3携带多参数请求3.Post请求方式3.1基本使用3.2携带单个参数请求 3.3携带多个参数请求4.设置代理请求 4.1方式一4.2方式二1.ht......
  • 音视频文件提供流式传输之HTTP Range 请求
    在Web开发中,正确返回音频和视频流给前端的方式是确保服务器端以流的形式发送媒体文件,而不是将整个文件加载到内存中,然后再传输。这种做法可以提高性能,避免内存溢出,尤其是在处理大文件时。对于音频和视频流的处理,最常见的技术是HTTP流式传输(HTTPStreaming)Range请求。这些......
  • 如何下载并安装HTTPS证书以保障网站安全
    问题描述: 购买了HTTPS证书后,不知道如何下载和安装到服务器上。希望获得详细的步骤指导,确保网站能够顺利启用HTTPS协议。解决方案:|步骤|描述||---|------||1.登录管理后台|使用管理员账号登录域名提供商或云服务商提供的管理后台。进入“业务管理”模块,选择“安......
  • HTTP调用
    若需在不依赖开发者工具场景如自身业务工程流水线上进行小程序项目上传、预览,则推荐使用miniprogram-ci开发者工具提供了命令行与HTTP服务两种接口供外部调用,开发者可以通过命令行或HTTP请求指示工具进行登录、预览、上传等操作。HTTPV2升级说明:自1.02.202003092开始,C......