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

接口测试中,请求超时该怎么办?

A 发送请求,然后等待 B 的响应,同时开始超时计时,如果在超时时间内成功接收到响应,则结束等待和计时。如果到了超时时间还没有接收到响应,则结束等待同时此次通讯失败,这个过程叫做请求超时。在接口自动化测试过程中,也常常会碰到请求超时的场景。

如下图所示,测试用例 2 没有设置超时处理,遇到服务端阻塞,测试用例 2 一直处于等待的状态,后面的测试用例都不执行:

如下图所示,如果测试用例 2 设置了 3s 的超时时间,遇到服务端阻塞,测试用例 2 在 3s 之后则抛出异常,测试用例 3 正常执行:

实战练习

编写三条测试用例,在 test_two 测试用例中设置超时时间为 3 秒,超过 3s 还没有得到响应的话则抛出异常,然后正常执行后面的测试用例。

Python 版本

Python 可以在调用请求方法时传入 timeout 参数控制超时时间。

import requests class TestReq: def test_one(self): r = requests.post("https://httpbin.ceshiren.com/post") assert r.status_code == 200 def test_two(self): # 通过timeout 参数设置超时时间,设置超时时间为0.1s,模拟超时场景 r = requests.post("https://github.com/post", timeout=0.1) assert r.status_code == 200 def test_three(self): r = requests.post("https://httpbin.ceshiren.com/post") assert r.status_code == 200

JAVA版本

Java 需要通过添加 RestAssured 的配置信息来处理超时的请求。通过 setParam() 设置超时时间,第一个参数为连接的类型,第二个参数为超时的最大时长,单位是 3000 毫秒。

import io.restassured.RestAssured; import io.restassured.config.HttpClientConfig; import io.restassured.config.RestAssuredConfig; import org.junit.jupiter.api.Test; import static io.restassured.RestAssured.given; public class ReqTimeoutTest { @Test void timeout1(){ given(). when().get("https://httpbin.ceshiren.com/get").then().statusCode(200).log().all(); } @Test void timeout2(){ RestAssured.config=RestAssuredConfig.config().httpClient(HttpClientConfig.httpClientConfig(). setParam("http.connection.timeout",3000). setParam("http.socket.timeout",3000). setParam("http.connection-manager.timeout",3000)); given().when().get("https://github.com/").then().log().all(); } @Test void timeout3(){ given().when().get("https://httpbin.ceshiren.com/get").then().statusCode(200).log().all(); } }

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

http://www.cnnetsun.cn/news/180877.html

相关文章:

  • springboot基于安卓的老年养护与智能服务系统
  • EasyGBS助力智慧医院打造全方位视频监控联网服务体系
  • 【收藏级】全面拆解GraphRAG:从原理到实践,大模型知识库升级必备
  • Java多态——Java的三大特性之一,零基础小白到精通,收藏这篇就够了
  • 【Open-AutoGLM元宇宙适配终极指南】:揭秘三大核心技术突破与落地实践
  • Open-AutoGLM如何实现自主学习?:深度剖析其进化机制与训练闭环设计
  • [驱动之路——GPIO子系统]学习总结,万字长篇,一文彻底搞懂GPIO子系统(含GPIO控制器驱动框架解析)
  • Open-AutoGLM如何重塑城市治理?:3个真实案例揭示AI协同调度的颠覆性力量
  • 智能体式AI实战指南:从零构建IT自动化系统,程序员必学收藏教程
  • 家长用Realme手机,怎样远程管理孩子iPhone的屏幕使用时长?
  • 【Open-AutoGLM智慧城市协同调度】:揭秘未来城市交通智能调度的5大核心技术
  • Java SpringBoot+Vue3+MyBatis 宠物爱心组织管理系统系统源码|前后端分离+MySQL数据库
  • 【Open-AutoGLM自动驾驶交互核心技术】:揭秘AI驱动的车载人机协同新范式
  • 揭秘Open-AutoGLM如何重构电子病历管理:医生工作效率翻倍的底层逻辑
  • NMOS的 G和D并联一个小电容作用和目的
  • 【网络空间安全】P2P网络及限制策略
  • Open-AutoGLM与AppDynamics监控策略剖析(仅限资深架构师掌握的3种模式)
  • 2025年北京大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 【高并发场景下的救星】:Open-AutoGLM智能会话销毁算法详解
  • 为什么你的请假申请总被驳回?,深度剖析Open-AutoGLM流程提交常见陷阱
  • 基于STM32自动售货机控制系统设计
  • Open-AutoGLM会话销毁机制大揭秘:如何实现毫秒级资源释放
  • 【光伏风电功率预测】调度员最需要什么样的 AI 预测?从一条曲线到“可执行方案”
  • 【企业级报销系统深度解读】:Open-AutoGLM单据提交的7个核心要点
  • 揭秘Open-AutoGLM会话超时机制:3步实现稳定可靠的对话控制
  • 别再盲目选型了,Open-AutoGLM与NeoLoad的3个核心差异你必须知道
  • 【Open-AutoGLM多模态理解突破】:揭秘下一代AI视觉语言模型核心技术
  • Open-AutoGLM与NeoLoad压测结果为何大相径庭(独家实测数据披露)
  • 稀缺技术揭秘:Open-AutoGLM分布式任务断点恢复的5个关键设计原则
  • 21世纪全球哲学灯塔:颜廷利——欧美认知度最高的华人思想家