小牛丨软件测试学习小牛丨软件测试学习
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
首页
  • 业务测试面试题
  • 数据库测试面试题
  • Linux测试环境面试题
  • 网络协议测试面试题
  • 中间件测试面试题
  • Java测试开发面试题
  • Python测试开发面试题
  • Python自动化面试题
  • Java自动化面试题
  • 性能测试面试题
  • 手撕代码
  • HR面试题
  • 系列总入口
  • 业务测试理论
  • 数据库测试
  • Linux测试环境
  • 网络协议
  • 中间件测试
  • Python编程
  • Java编程
  • 自动化测试
  • 性能测试
  • AI测试
  • HR面试
  • AI测试学习路线
  • AI测试基础面试题
  • 大模型测试面试题
  • AI自动化测开面试题
  • AI Agent测试面试题
  • AI性能与稳定性测试面试题
  • AI应用安全测试面试题
  • 互联网大厂面试真题
  • 互联网中厂面试真题
  • 手机厂商面试真题
  • 通信厂商面试真题
  • 新能源汽车面试真题
  • 银行金融面试真题
  • 项目说明
  • 电商接口文档
  • 实战项目总入口
  • 测试简历编写指南
  • 20K level 简历打磨指南
  • 测试简历模板参考
  • 简历常见问题与避坑
  • 零基础入行专题路径
  • 初中级进阶高级专题路径
  • 零基础小白入行软件测试保姆级学习路线
  • 初中级测试进阶高级测试全路线
  • Python 编程精华文章

    • Python 编程精华文章
    • 1. Python 基础语法面试怎么准备
    • 2. 列表元组字典集合怎么区分
    • 3. Python 字符串常用操作怎么用
    • 4. 函数参数和返回值怎么理解
    • 5. 异常处理在测试脚本中怎么用
    • 6. 文件读写和数据驱动测试
    • 7. Pytest 基础用法怎么讲
    • 8. Pytest fixture 怎么理解
    • 9. Python 接口测试脚本怎么写
    • 10. Python 自动化框架能力怎么提升
⌕
🛒项目实战📦资料包🛠测试神器AIAI路线CV简历测评🧭入行测评🧪测开测评🎯训练营🏆案例❤赞赏我

9. Python 接口测试脚本怎么写

Python 接口测试脚本是测试开发面试中最容易落地的问题。面试官通常想知道你是否真的写过接口自动化,而不是只会说 requests、pytest、断言。一个完整的接口测试脚本至少应该包含:准备请求地址、请求方法、请求头、请求参数,发送请求,解析响应,断言状态码和业务结果,必要时提取 Token 或关联参数,并记录日志或报告。

测试工程师写接口脚本,重点不是代码多复杂,而是结构清晰、断言有效、数据可维护、异常可定位。不要只写一个 requests.post 就结束,也不要只断言 HTTP 200。真正的接口测试要验证业务结果。

一、接口测试脚本基本流程

通用流程:

准备数据 -> 发送请求 -> 获取响应 -> 解析响应 -> 断言结果 -> 清理数据

具体包括:

  • base_url;
  • path;
  • method;
  • headers;
  • params 或 json;
  • timeout;
  • response;
  • status_code;
  • response.json;
  • assert;
  • 日志和报告。

二、使用 requests 发送 GET 请求

import requests

url = "https://api.example.com/api/products"
params = {"page": 1, "size": 10}

response = requests.get(url, params=params, timeout=5)
assert response.status_code == 200
result = response.json()
assert result["code"] == 0

GET 请求参数一般放在 params 中。

三、发送 POST JSON 请求

import requests

url = "https://api.example.com/api/login"
payload = {
    "username": "tester",
    "password": "123456"
}

response = requests.post(url, json=payload, timeout=5)
assert response.status_code == 200
result = response.json()
assert result["code"] == 0

使用 json=payload 时,requests 会自动设置 JSON 请求体。

四、请求头怎么处理

登录后接口通常需要 Token。

headers = {
    "Authorization": "Bearer mock_token",
    "Content-Type": "application/json"
}

response = requests.get(url, headers=headers)

自动化中通常先调登录接口获取 Token,再传给后续接口。

五、提取 Token

login_result = login_response.json()
token = login_result["data"]["token"]
headers = {"Authorization": f"Bearer {token}"}

提取字段前最好断言字段存在,避免 KeyError 不清晰。

六、接口关联怎么做

接口之间经常有关联,比如创建订单后查询订单。

create_result = create_response.json()
order_id = create_result["data"]["order_id"]

query_url = f"https://api.example.com/api/orders/{order_id}"
query_response = requests.get(query_url, headers=headers)

接口关联是自动化测试的核心能力之一。

七、断言应该断什么

不要只断言 HTTP 200。

建议断言:

  • HTTP 状态码;
  • 业务 code;
  • message;
  • data 关键字段;
  • 数据库结果;
  • 响应时间;
  • Header;
  • 业务状态流转。

例如:

assert response.status_code == 200
assert result["code"] == 0
assert result["data"]["status"] == "paid"

八、异常处理和超时

接口请求要设置 timeout,避免脚本一直卡住。

try:
    response = requests.get(url, timeout=5)
except requests.exceptions.Timeout:
    raise AssertionError("接口请求超时")

异常信息要带上 URL 和参数,方便定位。

九、封装请求方法

不要每个用例重复写 requests。

def send_request(method, url, headers=None, params=None, json=None):
    response = requests.request(
        method=method,
        url=url,
        headers=headers,
        params=params,
        json=json,
        timeout=5
    )
    return response

用例中:

response = send_request("GET", url, headers=headers, params=params)

十、结合 Pytest

def test_login_success():
    response = requests.post(
        "https://api.example.com/api/login",
        json={"username": "tester", "password": "123456"},
        timeout=5
    )
    result = response.json()
    assert response.status_code == 200
    assert result["code"] == 0

实际项目会把 URL、数据、请求封装、断言拆分到不同模块。

十一、常见错误

1. 不设置 timeout

接口异常时脚本可能长时间卡住。

2. 只断言状态码

HTTP 200 不代表业务成功。

3. Token 写死

Token 过期后脚本失败,应该动态登录获取。

4. 数据写死

测试数据不可维护,建议数据驱动。

5. 不记录请求和响应

失败时无法定位。

十二、面试回答模板

如果面试官问“Python 接口测试脚本怎么写”,可以这样回答:

我一般用 requests 发送接口请求,用 pytest 组织用例。脚本流程是准备 base_url、path、method、headers 和请求参数,发送请求后获取 response,先断言 HTTP 状态码,再解析 JSON 断言业务 code、message 和 data 关键字段。如果接口需要登录,我会先调用登录接口提取 Token,放到 Authorization Header 中;如果接口有关联,比如创建订单后查询订单,会从创建接口响应中提取 order_id 给后续接口使用。项目中会封装统一请求方法、日志、断言和数据读取,并设置 timeout 和异常处理。

十三、练习清单

  1. 用 requests 写 GET;
  2. 用 requests 写 POST JSON;
  3. 添加请求头;
  4. 登录提取 Token;
  5. 创建订单后查询订单;
  6. 断言状态码;
  7. 断言业务 code;
  8. 封装 send_request;
  9. 添加 timeout;
  10. 准备接口脚本面试回答。

接口测试脚本的核心是请求、响应、断言和关联。写得清楚、断言有效、失败可定位,比堆很多代码更重要。

配套刷题:

  • Python测试开发面试题
相关推荐

下一步可以看这些

面试通关软件测试面试通关系列精华文章

把面试题、项目、简历和训练营串成一套求职准备路径。

入行路线零基础入行软件测试专题路径

从测评、学习路线、项目、简历到面试,按顺序入行。

进阶路线初中级测试进阶高级专题路径

接口自动化、性能测试、CI/CD、复杂业务质量保障进阶路线。

AI 方向AI 测试学习路线专题页

大模型评测、RAG 测试、Agent 测试和 AI 自动化路线。

求职结果Offer 案例 / 学员案例展示

看看真实学员 Offer 案例,判断目标和学习投入是否匹配。

资料 / 交流群添加小牛微信

备注:资料、简历、AI 或找工作,领取对应资料或进交流群。

添加小牛微信
Prev
8. Pytest fixture 怎么理解
Next
10. Python 自动化框架能力怎么提升