【问题标题】:Postman - Newman running from NodeJSPostman - 从 NodeJS 运行的 Newman
【发布时间】:2021-08-25 16:16:32
【问题描述】:

为了保存来自 postman API 调用的响应,我正在使用 newman run 执行 Postman 集合。

集合在运行时运行使用

newman run C:\TasteBud\NewMan\JSON-Order_collection.json --env-var unique_order_id=OD-06-07-I2Q5-JYRY5ARPN --environment C:\TasteBud\NewMan\EnvironmentJSON.json

但是,当我将相同的集合作为 javascript 或 nodejs 脚本的一部分运行时。

node writeToFile.js    

它抛出错误,因为节点 "1⠄ JSONError in test-script " 参考附加图像。我需要将登录请求生成的身份验证令牌传递给后续请求。所以我在“测试”中有变量赋值。

let response = pm.response.json();
pm.environment.set("auth_token", response.data.auth_token);
console.log(pm.response.json().data.auth_token);

为什么我不能有“测试”?如果没有,那么我如何传递/设置这些环境变量以进行后续 API 调用?

writeToFile.js 中的代码在这里。 writeToFile.js

【问题讨论】:

  • 查看来自端点的响应,好像没有响应
  • 使用 htmlextra 报告它最好的,它让你的生活更轻松
  • 嗨@PDHide,感谢您的回复。第一次调用应该只获得 auth-token。所以没有回应。但是,该测试具有将身份验证令牌传递给 env 变量以用于后续请求的代码。这里的问题是呼叫失败的原因。有没有更好的地方问这个问题?
  • 错误来自 pm.response.json() ,这意味着端点没有响应。看到第一次调用你得到令牌的地方会有一个向你发送令牌的响应。打印该响应并查看问题所在

标签: postman newman


【解决方案1】:

在生成令牌时始终使用状态码验证。因为每个请求都是基于令牌的,如果我们收到否定的状态码,则终止构建。

postman.setNextRequest(null);

var jsonData = JSON.parse(responseBody);
if(responseCode.code === 200){
tests["Status code is 200"] = responseCode.code === 200;
postman.setEnvironmentVariable("AT", jsonData.oauth2.accessToken);
console.log("AccessToken : " +jsonData.oauth2.accessToken);
}
else{
    postman.setNextRequest(null);
      console.log("Error generating user token");
    console.log("Status code : "+responseCode.code);
    console.log("Status description  : "+jsonData.statusDescr);
}

【讨论】:

    猜你喜欢
    • 2018-06-20
    • 2017-08-17
    • 2016-09-24
    • 2015-10-12
    • 2019-01-02
    • 2017-11-03
    • 1970-01-01
    • 2022-06-22
    • 2018-05-26
    相关资源
    最近更新 更多