【问题标题】:Postman Test - Validating string values in an object in an array邮递员测试 - 验证数组中对象中的字符串值
【发布时间】:2017-04-15 03:45:54
【问题描述】:

我在邮递员中有一个测试,我可以验证数组中的字符串值,但前提是我知道返回它的索引。我遇到的问题是返回值的索引可以是随机的。

这就是我正在验证的 json 的样子。

{
    "cart": [{
        "offeringId": "1234",
        "offeringName": "Test1",
        "totalOfferingAmount": -15,
        "offeringTypeQualifier": "Test",
        "productTypeQualifier": "Product",
        "quantity": -1,
        "messages": [],
        "autoAdd": false,
        "autoAction": "removed",
        "addedByProcessor": true,
        "qualificationLevel": "FQ",
        "qualificationDetails": []
    }, {
        "offeringId": "5678",
        "offeringName": "Test2",
        "totalOfferingAmount": -15,
        "offeringTypeQualifier": "Test",
        "productTypeQualifier": "Product",
        "quantity": -1,
        "messages": [],
        "autoAdd": false,
        "autoAction": "removed",
        "addedByProcessor": true,
        "qualificationLevel": "FQ",
        "qualificationDetails": []
    }],
    "isCartValidForCheckout": true,
    "_status": []
}

这是我的邮递员测试

var data = JSON.parse(responseBody);
tests ["Verify offeringId"] = data.cart[0].offeringId === "1234"

【问题讨论】:

  • 您可能需要遍历数组以查看是否找到通过测试的对象,假设您的意图是说“数组有一个对象,其提供 ID === 1234”。也请直接复制并粘贴您的代码,而不是截图。

标签: javascript postman


【解决方案1】:

这是在当前 Postman v6.1.2 版本(原生应用,不在浏览器中)中测试的答案:

pm.test("Test for offeringId=1234", function () {

 var jsonData= JSON.parse('{"cart":[{"offeringId":"1234","offeringName":"Test1","totalOfferingAmount":-15,"offeringTypeQualifier":"Test","productTypeQualifier":"Product","quantity":-1,"messages":[],"autoAdd":false,"autoAction":"removed","addedByProcessor":true,"qualificationLevel":"FQ","qualificationDetails":[]},{"offeringId":"5678","offeringName":"Test2","totalOfferingAmount":-15,"offeringTypeQualifier":"Test","productTypeQualifier":"Product","quantity":-1,"messages":[],"autoAdd":false,"autoAction":"removed","addedByProcessor":true,"qualificationLevel":"FQ","qualificationDetails":[]}],"isCartValidForCheckout":true,"_status":[]}');

//var jsonData = pm.response.json(); // This is the production response. Uncomment this.
var size = jsonData.cart.length; // cart object is array. Get its size.

var flag = false;
console.log("Test for offeringId. size=[" + size + "]");

for(var i = 0; i < size; i++) {
  console.log("jsonData.cart[" + i + "].offeringId=[" + jsonData.cart[i].offeringId + "]");   // Debug 
  console.log(jsonData.cart[i].offeringId);
  if (jsonData.cart[i].offeringId == "1234") {
    console.log("1234 is found........");
    flag = true;
  }
}
pm.expect(flag).to.eql(true);
});

【讨论】:

    【解决方案2】:

    在 Postman 中使用正则表达式来测试已知值是一种很好的速记方式。

    cart.forEach(function(x, i) {
        tests['Test known offeringName ' + cart[i].offeringName ] = true === /^Test1$|^Test2$/.test(cart[i].offeringName);  } 
    )
    

    【讨论】:

      【解决方案3】:

      一旦验证为真,我不知道您打算做什么,但如果只是检查该特定 id 是否在响应中,您可以随时进行

      var size = data.cart.length;
      var flag = false;
      for(var i = 0; i < size; i++) {
        if(data.cart[i].offeringId === "1234") {
          flag = true;
        }
      }
      

      【讨论】:

        【解决方案4】:

        我认为你应该遍历整个数组并检查字符串值是否包含在任何索引中。

        var array = JSON.parse(responseBody)
        let testResult = array.find((each)=>{
            return each.offeringID === '1234'
         });  
        

        【讨论】:

          猜你喜欢
          • 2020-11-19
          • 1970-01-01
          • 2021-01-27
          • 1970-01-01
          • 2019-10-06
          • 1970-01-01
          • 2020-01-04
          • 2022-12-11
          • 1970-01-01
          相关资源
          最近更新 更多