使用Postman测试比较不同JSON响应数组中的整数

a64a0gku  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(168)

我有2个不同的JSON响应从2个不同的GET方法从 Postman 。
我正在试着写一个测试来比较它们。
第一个响应是specificYield

[
    [
        "2020-11-30T00:00:00Z",
        50.701604514154944
    ],
    [
        "2020-12-31T00:00:00Z",
        19.328539610238128
    ],
    [
        "2021-01-31T00:00:00Z",
        25.183636870929693
    ]
]

第二个响应是expectedYield

[
    [
        "2020-11-30T00:00:00Z",
        62.78336503569246
    ],
    [
        "2020-12-31T00:00:00Z",
        32.97678871921154
    ],
    [
        "2021-01-31T00:00:00Z",
        40.82916109964013
    ]
]

我尝试检查expectedYield数组中的整数值是否始终大于specificYield数组中的值
因此它将把62.78336503569246与50.701604514154944进行比较
然后从32.97678871921154到19.328539610238128
等等
到目前为止,测试看起来是这样的,但我知道我不再使用对象了,我正在尝试重构它,以便只使用数组。

pm.test("Expected Yield > Specified Yield", function () {
  const expectedYield = pm.response.json();
  const specificYield = pm.globals.get("specificYield");
  Object.values(expectedYield).forEach((record) => {
    pm.expect(record[0][1]).to.greaterThan(
      Object.values(specificYield).forEach((record) => {
        pm.expect(record[0][1]);
      })
    );
  });
});
oyxsuwqo

oyxsuwqo1#

我不知道PostMan语法,但标准的JS语法应该是

expectedYield.every((record, i) => record[1] > specificYield[i][1])

回调函数的第二个参数i是被测试元素的索引,用于将该记录与另一个数组的对应记录进行比较。
然后我们用every()来检查整个数组是否为真,没有必要用Object.values()--它用来把一个普通对象的属性转换成一个数组,以便使用数组方法,但这些已经是数组了.

相关问题