zoukankan      html  css  js  c++  java
  • 05-强大的断言功能

    如果没有断言,我们只能做接口的功能测试,但有了断言后,就为我们做自动化提供了条件,并且在postman中的断言是非常方便和强大的 。

    断言简述

    我们先来了解下postman断言的一些特点 ,具体如下

    • 断言编写位置:Tests标签
    • 断言所用语言:JavaScript
    • 断言执行顺序:在响应体数据返回后执行 。
    • 断言执行结果查看:Test Results

    在上面我们介绍到,编写的断言代码是JavaScript,那如果不会写怎么办 ? 不用担心,因为postman已经给我们内置了一些常用的断言 。用的时候,只需从右侧点击其中一个断言,就会在文本框中自动生成对应断言代码块 。

    postman教程-05-强大的断言功能

    断言

    常用断言

    接下来就让我们了解一些常用断言,还是按响应的组成来划分,分别是状态行,响应头,响应体。

    状态行中又包括状态码,状态消息 。在postman也可以对这两个进行断言

    状态行中的断言:

    • 断言状态码:Status code: code is 200
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);        //这里填写的200是预期结果,实际结果是请求返回结果
    });
    • 断言状态消息:Status code:code name has string
    pm.test("Status code name has string", function () {
        pm.response.to.have.status("OK");   //断言响应状态消息包含OK
    });

    响应头中的断言

    • 断言响应头中包含:Response headers:Content-Type header check
    pm.test("Content-Type is present", function () {
        pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"
    });

    断言响应体(重点)

    • 断言响应体中包含XXX字符串:Response body:Contains string
    pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("string_you_want_to_search");
    });     
    //注解
    pm.expect(pm.response.text()).to.include("string")      获取响应文本中包含string
    • 断言响应体等于XXX字符串:Response body : is equal to a string
    pm.test("Body is correct", function () {
        pm.response.to.have.body("response_body_string");
    });
    //注解
    pm.response.to.have.body("response_body_string");   获取响应体等于response_body_string
    • 断言响应体(json)中某个键名对应的值:Response body : JSON value check
    pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.value).to.eql(100);
    });
    //注解
    var jsonData = pm.response.json()   获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错
    pm.expect(jsonData.value).to.eql(100)  获取jsonData中键名为value的值,然后和100进行比较

    响应时间(一般用于性能测试)

    • 断言响应时间:Response time is less than 200ms
    pm.test("Response time is less than 200ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(200);   //断言响应时间<200ms
    });

    对单个请求断言

    以下案例是我们最常见的在单个请求中编写的断言,具体如下 。

    案例说明:

    针对以下接口返回的数据进行断言:

    {
        "cityid": "101120101",
        "city": "济南",
        "update_time": "2020-04-17 10:50",
        "wea": "晴",
        "wea_img": "qing",
        "tem": "16",
        "tem_day": "20",
        "tem_night": "9",
        "win": "东北风",
        "win_speed": "3级",
        "win_meter": "小于12km/h",
        "air": "113"
    }
    • 断言响应状态码为200
    • 断言city等于济南
    • 断言update_time包含2020-04-17
    postman教程-05-强大的断言功能

    编写的断言

    为集合断言

    除了可以为单个请求断言,postman还提供了非常方便的为集合断言,它的使用场景就是当多个请求的返回参数和参数值相同时,我们就可以编写一个通用的断言,最后达成的效果就是对每个请求的某个值进行断言 。

    编写通用断言的位置是在集合或集合的文件夹中 。具体位置如下图:

    postman教程-05-强大的断言功能

    打开集合断言

    案例说明:

    • 对项目中每个接口返回的响应状态码进行断言,同时对用户管理模块下每个接口的code进行断言。

    实现步骤:

    1. 选择其中一个集合,进行编辑,选择Tests标签,在文本域内输入断言响应状态码的代码块
    2. 选择用户管理文件夹,进行编辑,选择Tests标签,
    3. 批量运行该集合,就会查看到每个用例中都会
    postman教程-05-强大的断言功能

    断言集合

    postman教程-05-强大的断言功能

    断言模块

    postman教程-05-强大的断言功能

    断言结果展示

    总之,可以看出,postman不仅为每个请求提供了非常丰富的断言,还提供了集合断言,模块断言。这些都是非常实用的功能 。

  • 相关阅读:
    Mac保留Python2安装Python3(Anaconda3)
    Mybatis Plugin 以及Druid Filer 改写SQL
    Jackson替换fastjson
    Java单元测试 Http Server Mock框架选型
    应用中有多个Spring Property PlaceHolder导致@Value只能获取到默认值
    RabbitMQ Policy的使用
    Collectors.toMap不允许Null Value导致NPE
    php 删除标签
    php 替换标签
    jquery拼接html
  • 原文地址:https://www.cnblogs.com/edda/p/14537481.html
Copyright © 2011-2022 走看看