k6测试token生成器时响应体access_token存在性检查报错如何解决
k6 token接口校验报错解决方案
错误原因
报错是因为目标接口返回JSON格式响应时,k6不会将response.body保留为字符串类型,而是会解析为JS对象,对象类型不存在字符串专属的includes()方法,因此触发类型不匹配错误。
最优修复方案
直接解析响应JSON对象判断access_token字段是否存在,这种校验方式比字符串匹配更准确,不会出现字段名误匹配的问题,修正后的校验代码如下:
check(response, { "status equals 200": response => response.status === 200, "body contains valid access_token": response => { // 解析响应为JSON对象,判断字段存在且非空 const resData = response.json(); return resData.hasOwnProperty("access_token") && Boolean(resData.access_token); }, });
可选兼容方案
如果你确实需要用字符串匹配的方式做校验,可以先将响应体转换为字符串再调用includes()方法:
check(response, { "status equals 200": response => response.status === 200, "body contains access_token string": response => JSON.stringify(response.body).includes("access_token"), });
注意:该方案仅做字符串匹配,无法判断
access_token是否为有效响应字段,存在误判可能,优先推荐第一种方案。
内容的提问来源于stack exchange,提问作者JerryH
相关产品推荐
相关产品推荐

