K6运行Postman转换的登录测试脚本时POST请求校验失败问题
问题根因
测试断言失败不是操作流程错误,是postman-to-k6转换器自动生成的断言规则和登录接口实际返回规则不匹配导致的。
你贴出的脚本中,POST请求成功的判断逻辑是转换器默认生成的:
pm.test("Successful POST request", function() { pm.expect(pm.response.code).to.be.oneOf([201, 202]); });
这段逻辑默认POST请求成功的响应状态码只能是201(资源创建成功)或202(请求已被接受处理),但你在Postman中跑通登录场景时,接口返回的成功状态码并不在这两个值范围内——绝大多数登录接口请求成功时返回的是200 OK状态码,自然会触发断言失败,显示0%的请求通过率。
修复方案
直接修改断言的合法状态码列表,匹配接口实际的成功返回值即可。比如登录成功返回200的话,把断言修改为:
pm.test("Successful POST request", function() { pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]); });
你也可以先对照Postman中成功请求的实际响应状态码,把对应数值加入判断数组,确保断言逻辑和业务实际规则一致。
其他转换常见问题
如果修改状态码后依然报错,可以优先排查两个转换工具容易遗漏的问题:
- 缺失必要请求头:转换工具偶尔会漏带
Content-Type: application/json这类请求头,你当前脚本直接传了JSON格式的请求参数字符串,如果没带对应请求头,后端无法正确解析参数会返回4xx错误 - 缺失动态依赖参数:如果登录接口需要前置获取CSRF Token、动态签名这类参数,直接运行转换后的脚本会因为缺少必要参数请求失败,需要补全对应前置获取逻辑
内容的提问来源于stack exchange,提问作者Joseferson
相关产品推荐
相关产品推荐

