使用Newman执行Postman集合时遇多种报错,请求技术协助
问题排查与解决方法
一、*「getaddrinfo ENOTFOUND {{url}}」*错误解决
这个错误说明Newman未正确加载{{url}}变量的值,按以下步骤排查:
- 验证环境文件有效性:确保
environment_collection.json是Postman导出的标准环境文件,url变量需处于启用状态,格式示例:{ "name": "LocalEnv", "values": [ { "key": "url", "value": "http://localhost:3000", "enabled": true } ] } - 确认命令路径正确性:如果环境文件不在当前工作目录,需指定完整相对/绝对路径,比如:
Newman run ./collections/collection_name.json -e ./envs/environment_collection.json - 检查集合中URL引用:每个API请求的URL必须是
{{url}}/xxx的形式,确保变量名与环境文件中的key完全一致(大小写敏感)
二、POST请求/login失败的两类错误解决
1. *「connect ECONNREFUSED 127.0.0.1:3000」*错误
该错误表示本地3000端口无服务监听,排查点:
- 确认目标服务是否启动:直接在浏览器访问
http://localhost:3000,或用curl http://localhost:3000测试,查看是否有正常响应 - 检查服务监听地址:部分服务可能绑定非127.0.0.1的地址(如0.0.0.0或内网IP),需确认服务配置的监听IP
- 排查端口占用:用命令查看3000端口状态:
- Windows:
netstat -ano | findstr :3000 - Mac/Linux:
lsof -i :3000
若端口被占用,可杀掉占用进程或修改服务端口
- Windows:
2. *「test-script中的JSONError」*错误
该错误是测试脚本尝试解析非JSON格式响应导致的,解决方法:
- 给JSON解析加前置判断:修改测试脚本,先验证响应状态和内容类型,再解析JSON,示例:
if (pm.response.ok && pm.response.headers.get('Content-Type')?.includes('application/json')) { const resData = pm.response.json(); // 你的测试逻辑 } else { console.log('响应内容非JSON:', pm.response.text()); } - 查看实际响应详情:用Newman的verbose模式运行命令,打印完整响应内容以定位问题:
Newman run collection_name.json -e environment_collection.json -v
内容的提问来源于stack exchange,提问作者Amal Saad
相关产品推荐
相关产品推荐

