Playwright API测试复用方法异常:调用封装函数返回404而非200
问题原因排查及解决办法
核心问题分析
1. URL缺少协议头导致请求地址错误
你传递给封装函数的apiBaseUrl未添加https://或http://协议头,Playwright的request.get方法会将这类无协议的URL识别为相对路径,自动拼接测试配置中的baseURL(若未配置则默认指向本地服务),实际请求地址并非目标API服务器,因此返回404 Not Found。
而直接在测试用例中调用request.get时,你应该使用了完整的带协议头的URL,所以能正常请求到目标接口。
2. 封装函数未返回响应数据
在subscriptionapi.js中,你注释了return response;语句,导致测试用例里的response变量为undefined,无法获取接口返回内容。
解决步骤
步骤1:修正URL格式,添加完整协议头
修改subscriptionApitests.spec.js中的apiBaseUrl:
// 原代码 const apiBaseUrl = "apiv3.apifootball.com/?action=get_countries" // 修改后 const apiBaseUrl = "https://apiv3.apifootball.com/?action=get_countries"
步骤2:恢复封装函数的响应返回
修改subscriptionapi.js,取消返回语句的注释:
async function getSubscriptionsFromAPI(request, apiURL) { const response = await request.get(apiURL, { headers: { "X-Auth-Token": "abcdef", }, }); console.log(response.status()); console.log(response); return response; // 取消注释,返回响应对象 }
验证修改
重新运行测试用例,此时request.get会请求正确的完整API地址,同时测试用例能获取到封装函数返回的响应对象,应返回200 OK的正常响应。
内容的提问来源于stack exchange,提问作者Ghumman
相关产品推荐
相关产品推荐

