• postman:Tests模块之断言


    Part1 概念

    在Tests模块中,使用 JavaScript 为 Postman API 请求编写测试脚本,来验证 API 是否按预期工作,服务之间的集成是否可靠地运行,以及新的开发是否未破坏任何现有功能(从官网看的)。总而言之,Tests模块的作用很多,比如接口依赖、断言。
    Tests模块中写的脚本,是在请求运行后/前执行的。
    在集合、文件夹、请求中,都有Tests模块,区别是他们的作用域不同。
    这里主要介绍测试断言的一些脚本函数。

    Part2 一个简单的测试脚本

    比如,有一个登录请求,在Postman中打开请求,然后打开Tests页签,输入下面JS脚本:

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
    • 1
    • 2
    • 3

    这个JS脚本的作用是检查API请求返回的响应代码,如果响应代码为200,则代表测试通过,否则代表测试失败。
    运行脚本之后,得到下面的结果,可以看到响应代码是200,测试通过:
    在这里插入图片描述
    如果改一下脚本中的值,将200改成404,再次运行脚本,就得到了FAIL,并且有提示信息,说我们断言中期望的是404,但实际结果是200:
    在这里插入图片描述

    Part3 使用多个断言

    在写脚本时,可以将多个断言组合在一起:

    pm.test("The response has all properties",  ()  => {
        pm.expect(pm.response.text()).to.include("10000");
        pm.response.to.have.status(200);
        //console.error(pm.response.text())
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行的时候,所有的断言都通过,才算是通过,任何一个断言失败,整个测试都会失败:
    在这里插入图片描述

    Part4 常用断言介绍

    1.验证返回状态码是不是200

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    2.验证返回body内是否含有某个值

    pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("string_you_want_to_search");
    });
    
    • 1
    • 2
    • 3

    比如有一个请求,返回的body是下面的结构:
    在这里插入图片描述
    然后我们可以判断是否有“success”这个字符串,可以写成:

    pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("success");
    });
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    有时候为了更准确的判断,会判断指定的字段,比如直接判断"msg"是否包含"success":

    var jsonData = JSON.parse(responseBody)
    console.log(jsonData)
    
    pm.test("Body matches string", function () {
        pm.expect(jsonData.msg).to.include("success");
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    3.验证某个返回值是否等于XXX

    pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        console.log(jsonData)
        pm.expect(jsonData.value).to.eql(100);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5

    还是第2点的那个例子,判断"code"是否等于"0":
    在这里插入图片描述
    4.检查响应主体是否等于一个字符串

    pm.test("Body is correct", function () {
        pm.response.to.have.body("response_body_string");
    });
    
    • 1
    • 2
    • 3

    返回格式如下:
    在这里插入图片描述
    判断返响应主题是否等于:

    pm.test("Body is correct", function () {
        pm.response.to.have.body('{\n"message": "登录成功",\n    "code": 200,\n    "data": {\n        "token": \nXXXX"    \n}\n}"');
    });
    
    
    • 1
    • 2
    • 3
    • 4

    判断失败是因为token是不一样的。不过这个,我个人很少用到。
    在这里插入图片描述
    5.判断返回头类型

    pm.test("Content-Type is present", function () {
        pm.response.to.have.header("Content-Type");
    });
    
    • 1
    • 2
    • 3

    判断返回头是否包含"Content-Type"和"Transfer-Encoding"

    pm.test("res header is have", function () {
        pm.response.to.have.header("Content-Type");
        pm.response.to.have.header("Transfer-Encoding");
    });
    
    • 1
    • 2
    • 3
    • 4

    实际的返回头:
    在这里插入图片描述
    判断结果:
    在这里插入图片描述
    6.请求时长是否小于XXXms

    pm.test("Response time is less than 200ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(200);
    });
    
    • 1
    • 2
    • 3

    在这里插入图片描述
    7.判断返回码是否在期望列表里

    pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([200, 201, 202]);
    });
    
    • 1
    • 2
    • 3

    返回码是200,在列表里,就是通过:
    在这里插入图片描述
    8.判断响应代码里包含的字符串

    pm.test("Status code name has string", function () {
        pm.response.to.have.status("Created");
    });
    
    • 1
    • 2
    • 3

    比如请求成功,返回的字符串是OK:
    在这里插入图片描述

    pm.test("Status code name has string is OK", function () {
        pm.response.to.have.status("OK");
    });
    
    • 1
    • 2
    • 3

    在这里插入图片描述

  • 相关阅读:
    爬虫教程 一 requests包的使用
    编码规范、git 规范
    解密PDF密码
    pod原理
    YoloV5/YoloV7独家改进:Multi-Dconv Head Transposed Attention注意力,效果优于MHSA| CVPR2022
    2022~2023计算机毕业设计选题篇
    使用 nvm 管理 Node 版本及 pnpm 安装
    【算法系列 | 13】深入解析查找算法之—树表查找
    win10-wsl安装卸载以及软件安装
    常用分析模型---5W2H分析模型
  • 原文地址:https://blog.csdn.net/c_xiazai12345/article/details/123554982