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不仅为每个请求提供了非常丰富的断言,还提供了集合断言,模块断言。这些都是非常实用的功能 。

原文地址:https://www.cnblogs.com/edda/p/14537481.html