【问题标题】:Extract random values from arrays and reuse it headers for another request从数组中提取随机值并将其重用于另一个请求的标头
【发布时间】:2020-08-06 18:27:45
【问题描述】:

发布请求,它为我提供了来自该发布请求的大约 50 个随机令牌值。下面只展示了两个。我应该如何从这个 post 请求输出中捕获 randomtoken 值并将其用于标头中的下一个请求。

[
    {
        "randomtoken": "24d4d-asd124-410b-bdc603",
        "fields": {
            
            "Fields.cardno": "4654654123",
            "Fields.name": "LA",
            "Fields.status": "Started",
            "Fields.value": ""
        }
    },
    {
    "randomtoken": "12d4d-ae424-4s0b-we3c603",
        "fields": {
            "Fields.cardno": "4654654123",
            "Fields.name": "LA",
            "Fields.status": "closed",
            "Fields.value": ""
            }
    }
]

告诉我这是如何工作的

【问题讨论】:

  • 所以你做了一个初始请求,你得到 50 randomtoken 并且你应该为每个令牌发出请求?即还有 50 个请求?除了randomtoken 之外,这些请求中的每一个是否都相同?
  • 否,请求仅限于提供 50 个这样的随机令牌。我想在控制台上捕获并打印这些捕获令牌和卡号是什么。随机 token 和一些 Fields.status fields.cardno 输出也不同,其余相同。
  • 所以为了清楚起见,您只想打印到控制台randomtokenFields.cardno
  • @socalcheesehead yes randomtokenFields.cardno 并捕获变量并在下一个请求中使用它们

标签: arrays json global-variables postman


【解决方案1】:

假设您只是想打印到控制台,您可以执行以下操作:

var list = pm.response.json();
for(var i = 0; i < list.length; i++)
{
    console.log("randomtoken: " + list[i].randomtoken);
    console.log("cardno:      " + list[i].fields["Fields.cardno"]);
}

如果您还希望在另一个请求中重用任何变量,例如 randomtoken,那么您只需执行 pm.environment.set("randomtoken", randomtoken),其中 randomtoken 存储到循环中的变量中。

请记住,如果您将 randomtoken 存储到一个变量中,它将在循环的每次迭代中被覆盖,因此如果您打算重用它,您将需要一个策略来处理它。

【讨论】:

    【解决方案2】:

    您可以使用 POST 请求的测试并使用变量来做到这一点。

    在POST请求测试中,需要随机获取token值并保存为环境变量。

    pm.test("Get randomToken", function () {
        var jsonData = pm.response.json();
        pm.environment.set("randomToken", jsonData[i].randomtoken); 
        //NOTE: i is only to note that you access the object as an array
    });
    

    然后在您需要使用令牌的请求中,您只需转到标题选项卡并添加一个键并为值输入{{randomToken}}

    【讨论】:

    • 该代码中没有循环,所以我想它会因脚本错误而失败,因为它不知道 i 的定义是什么。
    • @DannyDainton 我只是把 i 表明他需要以数组的形式访问它。我应该注意到这一点。
    • 这很好,但它本身没有任何意义,您不妨添加其余代码 :D 如果这个人不知道如何循环某些东西怎么办?
    • 如何使用 pm.environment.set("randomToken", jsonData[i].randomtoken) 在控制台打印捕获的数据
    • 试过 console.log(pm.environment.set("randomToken", jsonData[0].randomToken));它说未定义.. @DannyDainton
    猜你喜欢
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    相关资源
    最近更新 更多