原文链接

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SIMu48RU-1661132737334)(upload://hzH8Hn3dSrud85VqV7ohKbHojW4.png)]

如下图所示,如果测试用例 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 == 200def test_two(self):# 通过timeout 参数设置超时时间,设置超时时间为0.1s,模拟超时场景r = requests.post("https://github.com/post", timeout=0.1)assert r.status_code == 200def 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
{@Testvoid timeout1(){given().when().get("https://httpbin.ceshiren.com/get").then().statusCode(200).log().all();}@Testvoid 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();}@Testvoid timeout3(){given().when().get("https://httpbin.ceshiren.com/get").then().statusCode(200).log().all();}
}

⬇️ 复制“下方链接”,提升测试核心竞争力!

你好呀,喜欢这篇文章的话记得点个“赞”哦!大家的支持很重要~() PS:有问题可以联系我们哦

更多技术文章分享和免费资料领取

技术分享 | 接口测试中,请求超时该怎么办?相关推荐

  1. 技术分享 | MySQL中MGR中SECONDARY节点磁盘满,导致mysqld进程被OOM Killed

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 在MGR测试中,人为制造磁盘满问题后,节点被oom killed 问题描述 在对 ...

  2. 技术分享 | 接口测试常用代理工具

    在接口测试中,有各种功能强大的代理工具,比如 Charles . Burpsuite . mitmproxy 等等.这些代理工具可以帮助我们构造各种测试场景.以及更好的完成测试工作.下面的介绍以 Ch ...

  3. 计算机网络中请求超时是什么意思,请求超时什么意思

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 以网络为例,请求超时的意思是客户机先发出请求,服务器响应这个请求.如果这之间的软件或硬件有问题,那个这个请求可能无法送答服务器,或 ...

  4. 计算机网络中请求超时是什么意思,网络请求超时怎么解决

    我们知道不少朋友在上网的时候,会遇到网络请求超时的情况,那造成网络请求超时的原因是什么呢?网络请求超时就是在程序默认的等待时间内没有得到服务器的响应.跟着小编一起来看看请求超时解决方法. 网络请求超时 ...

  5. mysql 行锁 超时_技术分享 | MySQL 行锁超时排查方法优化

    作者:xuty 本文来源:原创投稿 * 爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源. 一.大纲 #### 20191219 10:10:10,234 | com.ali ...

  6. bcp 不能调用where 子句_技术分享 || Mysql中IS NULL、IS NOT NULL不能走索引?

    mysql中IS NULL.IS NOT NULL不能走索引? 不知道是啥原因也不知道啥时候, 江湖上流传着这么一个说法 mysql查询条件包含IS NULL.IS NOT NULL.!=.like ...

  7. 技术分享 oracle中fm的作用

    SQL> select '|'||to_char(5,'999')||'|' from dual; 结果为:| 5| SQL> select '|'||to_char(5,'000')|| ...

  8. 我是如何做技术分享的 ?

    1. 前言 一直想在 2021 年给大家做一期分享,以解决咱们客户端团队分享频次多,但质量上还有些参差不齐的问题,名字就叫:如何做一个优秀的技术分享? 于是我回顾了一下我过去的分享,大大小小分享了 3 ...

  9. 一个研发团队是如何坚持7年技术分享的?

    --"所有分享都是有意义的" --"在PingCode,人人都可以成为分享者" 这是PingCode研发团队的分享精神,而这样的精神,在过去7年中已经闪耀了10 ...

最新文章

  1. python输入三个数输出最小值_python之输入一系列整数输出最大值
  2. CSS公共清除浏览器默认样式
  3. k8s创建pod加入容器_K8S架构原理及其工作流程
  4. 关于网页导航栏制作的几种方法与常见问题解决(新人向)
  5. 【JS 逆向百例】XHR 断点调试,Steam 登录逆向
  6. 随想录(easyx开发上位机)
  7. linux使用windows中编辑的文件,格式问题
  8. 智能优化算法应用:基于麻雀搜索算法无线传感器网络(WSN)覆盖优化 - 附代码
  9. 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核抢占实现机制分析...
  10. C# WinAPI 编程详解(一)
  11. 海思3518E开发笔记1.2——海思SDK脚本学习
  12. win7网络适配器_win7网络重置
  13. php slim 教程,php框架slim架构上存在XXE漏洞(XXE的典型存在形式)
  14. 纯干货,PSI 原理解析与应用
  15. redis知识盘点【陆】_客户端Jedis
  16. 寻找java兼职(全职)人员
  17. 复现ReDet RTX 3090 pytorch1.8.1
  18. Android https 自签名和CA证书验证(基于OkHttp)
  19. C语言求两数最小公倍数
  20. Python 列表,for循环,元组的使用(修改、添加、删除、排序、切片)

热门文章

  1. Android自定义View之ListView实现时间轴效果:我只是个送快递的。
  2. vscode输出中文乱码问题
  3. Request Headers请求头和Response Headers响应头
  4. 优秀课件笔记english-writing专业英语写作5
  5. Tak and Cards(dp)
  6. 【ubuntu】dpkg: 错误: 另外一个进程已经为 dpkg frontend 加锁
  7. ELO rating system
  8. 项目管理(PMP学习些什么)
  9. 交互式推荐在美团的实现
  10. TopGeek:移动互联网时代,选择Android还是iOS?