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

发表于:2023-2-09 09:59

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:linger7725    来源:CSDN

  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().
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号