首页/开发/软件测试速查/Playwright 接口请求上下文
自动化测试66 条

Playwright 接口请求上下文

Playwright 的 request 夹具(APIRequestContext)可在同一套用例里直接调用后端接口:准备数据、验证副作用、串起 UI 与 API 的混合流程,无需额外 HTTP 客户端。

软件测试速查开发更新于 2026-10-13

接口测试怎么用

Playwright 内置的 APIRequestContext 可以绕过浏览器直接发 HTTP 请求:既用于接口测试,也为 UI 测试做数据准备与清理(接口建单、界面验单)。杀手锏是与浏览器上下文共享 cookie 与 storageState——接口登录一次,UI 直接用;或复用 UI 登录后的会话。用它组织「接口快、界面准」的混合套件,是平衡反馈速度与真实性的常用手段。

基本信息

入口request fixture(测试级)、playwright.request.new_context()、context.request
会话共享context.request 继承对应浏览器上下文的 cookie
断言expect(response).to_be_ok() 加状态码与 JSON 断言组合
数据准备beforeAll 里用接口造数,UI 用例只做业务验证
认证复用 storage state,或手动在请求头带 token
混合测试同一用例里接口加界面组合,兼顾速度与真实性

混合用法示例

混合用法示例
from playwright.sync_api import expect

def test_create_order_via_api_then_ui(page, request):
    resp = request.post("/api/orders", data={"sku": "SKU-1"})  # 接口造数
    expect(resp).to_be_ok()
    order_id = resp.json()["id"]
    page.goto(f"/orders/{order_id}")            # 界面验证展示
    expect(page.get_by_text("待支付")).to_be_visible()

典型使用场景

  • 接口层回归:不起浏览器,速度快、稳定性高
  • UI 用例的数据准备与清理:API 前置,UI 收尾
  • 混合测试:API 造状态加界面走关键交互
  • 认证复用:接口侧拿会话,界面侧免登录
  • 接口冒烟进 CI:分钟级跑完核心接口
  • 接口巡检:独立脚本批量扫核心接口,产出结构校验报告
  • 环境切换:baseURL 与凭据从配置注入,一套用例多环境复用

四种入口怎么选

入口作用域适用
request fixture单条测试纯接口用例
context.request共享浏览器会话API 加 UI 混合流
request.new_context()独立会话多账号隔离场景
page.request页面级跟随页面会话发请求
APIRequestContext 不受浏览器同源限制,但也不会自动重试与自动等待:超时、重试策略要自己配置。
token 与 storageState 二选一:两种认证方式混用会出现「一半请求带不上会话」的诡异失败。
别用直连数据库来造数:绕过被测试边界,接口或界面的问题会被掩盖,验证结果失真。
接口造数后要清理:残留数据会污染后续用例断言与统计报表,收尾逻辑和造数逻辑同样重要。

易错点

  • 所有验证都改成接口断言:该验的界面交互没人验,前端缺陷漏过
  • 请求发出却不做断言:只看状态码不看响应体,错误数据静默通过
  • baseURL 与凭据硬编码:切换环境全部返工,改用配置注入
  • 混合流里一会用 token 一会用会话:认证状态互相干扰,统一成一种方式
  • API 用例之间靠执行顺序传递数据:并行化后互相依赖崩掉,先让用例自治

数据来源与参考

  • Playwright 官方文档:API testing(playwright.dev)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌