【问题标题】:POSTMAN - how to check response body for a value > 0POSTMAN - 如何检查响应正文中的值 > 0
【发布时间】:2020-10-08 14:51:16
【问题描述】:

我对邮递员还很陌生,正在努力寻找以下问题的答案

我有一个返回如下数据的查询:

{
   "dailyProcessing":{
      "2020-10-01":{
         "Database":{
            "list0":0,
            "list1":0,
            "list2":300,
            "list3":0,
            "list4":0
         }
      },
      "2020-10-02":{
         "Database":{
            "list0":0,
            "list1":0,
            "list2":0,
            "list3":0,
            "list4":400
         }
      }
   }
}

我需要编写一个测试来检查其中一个值是否返回一个 >0 并且不确定格式应该是什么。

使用的列表是随机的,所以它不能特定于一个列表,但总会有一个被使用,如果我们在响应中没有看到大于 0 的值,我们需要标记,因为它会确定处理问题

我的知识很少,所以试着把东西放在一起

pm.expect(pm.response.text()).to.include

但我似乎没有得到我需要的结果

抱歉,如果这是一件非常简单的事情,我还不知道我正在尝试做什么(即术语)

提前致谢

【问题讨论】:

    标签: postman postman-testcase


    【解决方案1】:

    希望这段代码对你有帮助,把它放在测试标签中

    它将遍历每个属性,导航到数据库属性,然后遍历每个列表项。

    它将对所有可用项执行此操作,直到满足条件,条件是列表项值> 0。

    一旦满足条件,它将从两个循环中中断,然后断言满足的条件为真。

    如果所有值都为 0 并且循环完成,则条件将不满足,您的测试将失败。

    var dailyProcessing = JSON.parse(responseBody);
    var conditionMet = false;
    
    for (var key in dailyProcessing)
    {
        console.log(Object.keys(dailyProcessing).length)
        console.log(key)
    
        for(var item in dailyProcessing[key].Database)
        {
            if(dailyProcessing[key].Database[item] > 0){
                conditionMet = true;
                break;
            }
        }
    
        if(conditionMet){
            break;
        }
    }
    
    pm.test("Condition is met", function() {
        pm.expect(conditionMet).to.be.true;
    });
    

    【讨论】:

    • 这非常有帮助。谢谢你的解释和解释
    • 非常感谢您的代表!你可以用邮递员做很酷的事情,这只是 javascript。例如,我为一组项目创建了动态邮递员测试,这些项目在响应主体中返回,断言属性值已设置为某个值,只需创建一个在迭代项目上运行 pm.test 的 foreach 循环。我喜欢它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-21
    • 2017-04-02
    • 2018-09-16
    • 2021-08-06
    • 1970-01-01
    • 2019-09-03
    • 2022-03-11
    相关资源
    最近更新 更多