在现代Web应用测试中,精准控制网络请求是提升测试效率和可靠性的重要因素。
Playwright 提供了强大的网络请求拦截与Mock能力,让你能够:
-
拦截并修改 请求头、参数、URL
-
模拟API响应 无需依赖真实后端
-
构造异常场景 测试边缘情况
-
加速测试执行 避免真实网络延迟
一、核心概念:路由与请求处理
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
context = browser.new_context()
page = context.new_page()
# 核心路由拦截方法
def handle_route(route):
if"api/v1/user"in route.request.url:
# 在此处处理特定请求
...
route.continue_()
# 注册全局路由处理器
page.route("**/*", handle_route)
page.goto("https://your-app.com")
二、实战技巧:4种典型应用场景
场景1:修改请求参数(如添加认证Token)
def handle_route(route):
headers = route.request.headers
headers["Authorization"] = "Bearer mock_token" # 注入模拟Token
route.continue_(headers=headers) # 修改后继续请求
场景2:拦截特定请求返回Mock数据
def mock_user_api(route):
if route.request.url.endswith("/api/user"):
# 构造JSON响应
route.fulfill(
status=200,
content_type="application/json",
body=json.dumps({"name": "测试用户", "id": 1001})
)
else:
route.continue_()
场景3:模拟网络异常(测试错误处理)
def simulate_failure(route):
if "payment-api" in route.request.url:
# 返回500错误
route.fulfill(status=500, body="Service Unavailable")
else:
route.co

最低0.47元/天 解锁文章
185

被折叠的 条评论
为什么被折叠?



