【问题标题】:I am finding difficult to do assertion on the below API response我发现很难对以下 API 响应进行断言
【发布时间】:2021-12-12 19:33:02
【问题描述】:
[{
    "FP": "DAV1",
    "SMO": false,
    "SP": [{
        "name": "FOP1",
        "Exam": [{
            "Marksguid": "a02dac4f-630f-4ed0-aa54-8c7044b71f2f",
            "apiUrl": "test1",
            "interval": 65,
            "schemaVersion": "1.2",
            "authenticationType": "Basic"
        }]
    }]
}, {
    "FP": "FOP10",
    "SMO": false,
    "SP": [{
        "name": "FOP10",
        "Exam": [{
            "Marksguid": "f778dd51-d401-42ca-a5ea-4920db5708b2",
            "apiUrl": "test1",
            "interval": 65,
            "schemaVersion": "1.2",
            "authenticationType": "Basic"
        }]
    }]
}, {
    "FP": "FOP2",
    "SMO": false,
    "SP": [{
        "name": "FOP2",
        "Exam": [{
            "Marksguid": "8c49f158-7286-4f15-904c-564b41966b6b",
            "apiUrl": "test1",
            "interval": 65,
            "schemaVersion": "1.2",
            "authenticationType": "Basic"
        }]
    }]
}, {
    "FP": "FOP3",
    "SMO": false,
    "SP": [{
        "name": "FOP3",
        "Exam": [{
            "Marksguid": "c5f2893f-b8fb-4494-8126-b3de47ebe440",
            "apiUrl": "test1",
            "interval": 65,
            "schemaVersion": "1.2",
            "authenticationType": "Basic"
        }]
    }]
}]

我想为“FP”:“FOP2”和下面的名称做断言,并检查所有这些东西。有人可以帮我解决这个问题。

【问题讨论】:

    标签: postman postman-pre-request-script postman-testcase


    【解决方案1】:

    首先,你解析响应体:

    const responseJson = pm.response.json();
    

    然后您可以通过responseJson 变量访问数据。

    有一个数组,你对FP 属性感兴趣,所以你只能得到那些:

    const fps = responseJson.map(arr => arr.FP);
    

    最后你可以断言存在FOP2

    pm.expect(fps).to.include.members(["FOP2"]);
    

    所以整个检查可能如下所示:

    pm.test("Array contains 'FOP2'", () => {
      const responseJson = pm.response.json();
      const fps = responseJson.map(arr => arr.FP);
    
      pm.expect(fps).to.include.members(["FOP2"]);
    });
    

    下面的名字和考试所有这些东西

    我不完全知道你想在那里断言什么,你需要更具体。但也许你可以按照我的例子继续自己。

    【讨论】:

    • 谢谢!!我收到这样的错误 Array contains 'FOP2' | AssertionError: 预期 [ Array(42) ] 与 [ 'FOP2' ] 具有相同的成员
    • 我使用了和你一样的东西 pm.test("Array contains 'FOP2'", () => { const responseJson = pm.response.json(); const fps = responseJson .map(arr => arr.FP); pm.expect(fps).to.have.members(["FOP2"]); });
    • "FP": "FOP2", "SMO": false, "SP": [{ "name": "FOP2", "Exam": [{ "Marksguid": "8c49f158-7286 -4f15-904c-564b41966b6b", "apiUrl": "test1", "interval": 65, "schemaVersion": "1.2", "authenticationType": "Basic" }] }] 还有当我 "FP": "FOP2 ",我需要断言 "SMO": false,以及以下参数 "SP": [{ "name": "FOP2", "Exam": [{ "Marksguid": "8c49f158-7286-4f15-904c-564b41966b6b ",
    • 我的问题:1. 我想断言“FP”:“FOP2”。 2. 如果第一步成功。我想断言“SMO”:false,3。我还需要断言 SP.name.FOP2 及其对应的 Exam.“Marksguid”:
    • @dhiwakaranarumugam:我的帖子现在有一个变化,应该是pm.expect(fps).to.include.members(["FOP2"]);,因为fps 是预期数组的超集。这就是你得到错误的原因。更多信息请参阅文档chaijs.com/api/bdd/#method_members
    猜你喜欢
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    相关资源
    最近更新 更多