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

简介: 如果在超时时间内成功接收到响应,则结束等待和计时。如果到了超时时间还没有接收到响应,则结束等待同时此次通讯失败

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

> https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=Aliyun&timestamp=1661131330&author=QY

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();
    }
}
相关文章
|
22天前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
66 5
Postman 接口测试配置 Pre-request Script
|
11天前
|
SQL 安全 测试技术
[go 面试] 接口测试的方法与技巧
[go 面试] 接口测试的方法与技巧
|
1月前
|
测试技术 Python
我们假设要测试一个名为`http://example.com`的网站,并对其进行简单的GET请求性能测试。
我们假设要测试一个名为`http://example.com`的网站,并对其进行简单的GET请求性能测试。
|
1月前
|
Shell Python
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。
`pytest-httpserver`是一个pytest插件,它允许你在测试期间启动一个轻量级的HTTP服务器,并模拟HTTP请求和响应。
|
1月前
|
XML JSON 测试技术
Postman接口测试工具详解
📚 Postman全攻略:API测试神器!📚 发送HTTP请求,管理集合,写测试脚本,集成CI/CD。从安装配置到环境变量、断言、数据驱动测试,一步步教你如何高效测试RESTful API。实战案例包含GET、POST、PUT、DELETE请求。用Newman在命令行跑集合,自动化测试不发愁!👉 [洛秋小站](https://www.luoqiu.site/) 学更多!🚀
60 1
|
20天前
|
JSON 前端开发 测试技术
Postman 接口测试工具详解
在执行这些测试案例时,请确保遵循实际的API规范,并根据API的特定要求调整步骤和参数。
|
21天前
|
运维 监控 Serverless
函数计算产品使用问题之如何使用内网地址请求测试环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
23天前
|
Java 测试技术
JMeter接口性能测试使用
JMeter接口性能测试使用
25 0
|
1月前
|
JSON 测试技术 数据格式
postman接口测试工具详解
postman接口测试工具详解
|
1月前
|
JSON JavaScript 测试技术
Postman接口测试工具详解
Postman接口测试工具详解
66 1

热门文章

最新文章