庆云php

庆云php

postman学习的开始:有了断言后,就为我们做自动化提供了条件,并且在postman中的断言是非常方便和强大的

PHP 0

断言

如果没有断言,我们只能做接口的功能测试,但有了断言后,就为我们做自动化提供了条件,并且在postman中的断言是非常方便和强大的 。 我们先来了解下postman断言的一些特点 ,具体如下
  • 断言编写位置:Tests标签
  • 断言所用语言:JavaScript
  • 断言执行顺序:在响应体数据返回后执行 。
  • 断言执行结果查看:Test Results
在上面我们介绍到,编写的断言代码是JavaScript,那如果不会写怎么办 ? 不用担心,因为postman已经给我们内置了一些常用的断言 。用的时候,只需从右侧点击其中一个断言,就会在文本框中自动生成对应断言代码块 。 接下来就让我们了解一些常用断言,还是按响应的组成来划分,分别是状态行,响应头,响应体。 状态行中又包括状态码,状态消息 。在postman也可以对这两个进行断言 状态行中的断言
  • 断言状态码:Status code: code is 200
  1. pm.test("Status code is 200", function () {
  2.   pm.response.to.have.status(200); //这里填写的200是预期结果,实际结果是请求返回结果
  3. });
  • 断言状态消息:Status code:code name has string
  1. pm.test("Status code name has string", function () {
  2.    pm.response.to.have.status("OK"); //断言响应状态消息包含OK
  3. });
响应头中的断言
  • 断言响应头中包含:Response headers:Content-Type header check
  1. pm.test("Content-Type is present", function () {
  2.    pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"
  3. });
断言响应体(重点)
  • 断言响应体中包含XXX字符串:Response body:Contains string
  1. pm.test("Body matches string", function () {
  2.    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
  3. });
  4. //注解
  5. pm.expect(pm.response.text()).to.include("string") 获取响应文本中包含string
  • 断言响应体等于XXX字符串:Response body : is equal to a string
  1. pm.test("Body is correct", function () {
  2.    pm.response.to.have.body("response_body_string");
  3. });
  4. //注解
  5. pm.response.to.have.body("response_body_string"); 获取响应体等于response_body_string
  • 断言响应体(json)中某个键名对应的值:Response body : JSON value check
  1. pm.test("Your test name", function () {
  2.    var jsonData = pm.response.json();
  3.    pm.expect(jsonData.value).to.eql(100);
  4. });
  5. //注解
  6. var jsonData = pm.response.json() 获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错
  7. pm.expect(jsonData.value).to.eql(100)  获取jsonData中键名为value的值,然后和100进行比较
响应时间(一般用于性能测试)
  • 断言响应时间:Response time is less than 200ms
  1. pm.test("Response time is less than 200ms", function () {
  2.    pm.expect(pm.response.responseTime).to.be.below(200); //断言响应时间<200ms
  3. });
案例说明: 针对以下接口返回的数据进行断言:
  1. {
  2.    "cityid": "101120101",
  3.    "city": "济南",
  4.    "update_time": "2020-04-17 10:50",
  5.    "wea": "晴",
  6.    "wea_img": "qing",
  7.    "tem": "16",
  8.    "tem_day": "20",
  9.    "tem_night": "9",
  10.    "win": "东北风",
  11.    "win_speed": "3级",
  12.    "win_meter": "小于12km/h",
  13.    "air": "113"
  14. }
  • 断言响应状态码为200
  • 断言city等于济南
  • 断言update_time包含2020-04-17
总结,整体来说,如果用postman做接口测试,这个断言功能必不可少,其中我们常断言的响应体包含和JSON这俩个断言又是重重之重。