【Postman】4 Postman test断言功能的使用

一、Postman的断言概述

断言,是一个完整测试用例所不可或缺的一部分,没有断言的测试用例仅仅是测试步骤。

Postman的Test模块就是实现请求断言功能的,也是基于Node.js的,可以确保您的API能够按预期运行,确定服务之间的集成可靠运行,并验证新开发未破坏任何现有功能。您可以将断言添加到单个请求集合中。postman提供了很多集成的代码片段,我们只需要点击,然后进行简单的修改,就可以适用于请求的断言了。

Test中的断言脚本在收到响应后执行,当您单击Send时,当响应数据从API返回时,Postman将运行您的测试脚本。

要执行断言脚本以验证请求返回的数据,使用pm.test函数定义断言,他提供一个名称和函数,该函数返回一个布尔值(true或false)来指示测试是通过还是失败。并结合使用pm.response对象和pm.expect来测试响应详细信息。

二、Postman中断言方法的使用

1、响应状态码断言:验证响应结果的状态码是否为200

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

2、响应正文内容断言:验证响应正文中是否存在指定的字符串“1234.jpg”

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("1234.jpg");
});

3、响应正文内容断言:验证响应的Json格式正文中指定的字段数据是否符合预期

pm.test("断言filename为1234.jpg", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(“1234.jpg”);
});

4、响应头部断言:验证响应头部信息中是否包括指定的字段

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

5、响应时间断言:验证响应结果返回的时间是否在指定的范围内

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

6、从csv文件中获取参数字段(如expect字段),与响应正文进行对比断言

 

 

 上表中的expect字段表示测试用例的预期结果(是显示在响应正文中的字符),我们可以如下设置断言,具体使用在后续参数化和testrunner文章中详解

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include(data.expect);
});

三、断言结果的查看

设置好test下的断言之后,点击send按钮发送请求,在response区域的Test results中可以查看断言是否成功

四、常见的pm的使用

pm对象包含与正在执行的脚本有关的所有信息,并允许一个对象访问正在发送的请求或已接收的响应的副本。它还允许获取并设置环境和全局变量。

1、pm.response

在测试脚本中,该pm.response对象包含与收到的响应有关的所有信息:

  • pm.response.code:Number
  • pm.response.status:String
  • pm.response.headers:HeaderList
  • pm.response.responseTime:Number
  • pm.response.responseSize:Number
  • pm.response.text():Function → String
  • pm.response.json():Function → Object

2、pm.expect

在测试脚本中,该pm.expect处理responsevariables的数据断言很有用。

测试脚本中提供了Response Assertion API

  • pm.response.to.have.status(code:Number)
  • pm.response.to.have.status(reason:String)
  • pm.response.to.have.header(key:String)
  • pm.response.to.have.header(key:String, optionalValue:String)
  • pm.response.to.have.body()
  • pm.response.to.have.body(optionalValue:String)
  • pm.response.to.have.body(optionalValue:RegExp)
  • pm.response.to.have.jsonBody()
  • pm.response.to.have.jsonBody(optionalExpectEqual:Object)
  • pm.response.to.have.jsonBody(optionalExpectPath:String)
  • pm.response.to.have.jsonBody(optionalExpectPath:String, optionalValue:*)
  • pm.response.to.have.jsonSchema(schema:Object)
  • pm.response.to.have.jsonSchema(schema:Object, ajvOptions:Object)
posted @ 2020-06-05 18:13  gungunaaa  阅读(839)  评论(0)    收藏  举报