• Postman中的断言


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁)知识定位人群定位
    🧡 Python实战微信订餐小程序 🧡进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛入门级手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    Postman设置断言

    一、断言的定义

    1、什么是断言?

    一般一个完整的接口测试,包括:请求->获取响应正文->断言,请求和获取响应正文很常见。断言一般是对请求的响应结果做操作,判断预期结果与实际结果是否一致。
     
    2、postman中在哪里设置断言?
    (1)设置断言的操作栏位置


    (2)自动生成断言代码

    (3)断言的流程

    • 在postman的tests页签中截取要对比的响应信息;

    • 利用断言语句tests[]或chai.js形式把实际响应信息与期望结果对比;

    • 执行请求进行结果查看;

    二、Postman断言的语法

    1、语法一:tests[‘测试用例名称’] = 逻辑表达式;

    //获取响应行信息
    var code = responseCode.code  //获取响应状态码
    tests["case\_demo\_01: 验证响应状态码是否为200"] = code === 200 //做断言
    var name = responseCode.name  //获取响应状态信息
    tests["case\_demo\_02: 验证响应的状态信息是否正确"] = name === "OK" //做断言
    
    • 1
    • 2
    • 3
    • 4
    • 5


    2、语法二:chai.js断言语法

    //新版本写法------chai.js语法
    pm.test("TestcaseTitle", function () {
     pm.expect(true).to.be.true;    //chai.js断言编写处 
    });
    
    pm.test("case\_demo\_01", function () {
     pm.expect(2<5 && 3<6).to.be.true         //判断是否为true
    });
    
    pm.test("case\_demo\_02", function () {
     pm.expect("everything").to.be.ok         //判断是否为真值 非空、非0 即为真
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    三、Postman中chai.js断言常用语法

    1、pm.expect

    pm.test("测试标题",function(){
     pm.expect(true).to.be.true;//chai.js断言编写
    });
    pm.expect(2<5 && 3<6).to.be.true;//判断是否为true
    
    • 1
    • 2
    • 3
    • 4

    2、pm.response

    pm.test("Status code is 200",function(){
     pm.response.to.have.status(200);     //判断状态码是否为200
    });
    
    pm.test("Content-Type is present",function(){
     pm.response.to.have.header("Content-Type");、、判断响应头是否有Content-Type字段
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3、tv4(Tiny Validator for JSON data)–postman断言库可以进行json schema(结构)的断言

    var schema ={
     "type":"object",     //表示当前节点的类型,最外层type代表json的最外层是什么样的类型
         "properties":{     //代表当前节点的子节点信息。如 access\_token 和 expires\_in
               "access\_token":{
     "type":"string"
     },
     "expires\_in":{
     "type":"integer"
     }
     }
     "required":{     //一个数组类型,代表当前节点下必须的节点key
              "accsee\_token",
     "expires\_in"
     }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    4、其他的常用断言脚本

    (1)清除一个环境变量

    postman.clearEnvironmentVariable("variable\_key");
    
    • 1

    (2)断言响应数据中是否存在某个元素

    tests["//断言返回的数据中是否存在\_\_pid\_\_这个元素"]=responseBody.has("pid");
    
    • 1

    (3)断言response等于预期内容

    tests["Body is correct"] = responseBody === "response\_body\_string";
    
    • 1

    (4)断言json解析后的key的值等于预期内容

    tests["Args key contains argument passed as url parameter"] = 'test' in responseJSON.args
    
    • 1

    (5)检查response的header的信息是否有被测字段

    tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");
    
    • 1

    (6)校验响应数据中,返回的数据类型

    var jsonData = JSON.parse(responseBody);//第一步先转化为json字符串。其中变量(jsonData)可以自行定义......
    
    tests["//data.category.name\_\_valuse的值的类型是不是string"] = typeof(jsonData.data.category[0].name) == "string";
    
    • 1
    • 2
    • 3

    (7)响应时间判断

    tests["Response time is less than 200ms"] = responseTime < 200;
    
    • 1

    (8)设置环境变量

    postman.setEnvironmentVariable("variable\_key", "variable\_value");
    
    • 1

    (9)断言状态码

    tests["Status code is 200"] = responseCode.code != 400;
    
    • 1

    (10)检查响应码name

    tests["Status code name has string"] = responseCode.name.has("Created");
    
    • 1

    (11)断言成功的post请求返回码

    tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;
    
    • 1
  • 相关阅读:
    Tarjan强连通分量详解
    LeetCode 热题100——栈与队列专题(三)
    python2和python3有什么区别
    Git基础入门
    使用 Guava Retry 优雅的实现重试机制
    Android Studio的Java项目种运行main()的方法
    Python 自动化: eip、cen监控数据对接到 grafana
    传输层两大战将TCP、UDP的定位
    NAT如何配置地址转换
    数据结构与算法训练:第二十弹
  • 原文地址:https://blog.csdn.net/u013190417/article/details/126515755