1.什么是 swagger
Swagger 是一个用于生成、描述和调用 RESTful 接口的 WEB 服务。
通俗的来讲,Swagger 就是将项目中所有想要暴露的接口展现在页面上,并且可以进行接口调用和测试的服务。
现在大部分的项目都使用了 swagger,因为这样后端开发就不需要专门为接口使用者编写接口文档。
当接口更新之后,只需要修改代码中的 Swagger 描述就可以实时生成新的接口文档,这样就可以避免接口文档老旧不能使用的问题。
而且通过 Swagger 页面,可以直接进行接口调用,降低了项目开发阶段的调试成本。
1.1.分析查询接口
接口的 swagger 文档怎么看:
1.1.1、调试宠物
怎么在页面上调试接口,以查询宠物接口举例 - 点击 Try it out
- 请求参数 status
选择 available
- 点击 Execute
发出请求 - 下方展示当前请求的 Curl
命令 - 下方展示当前请求的完整 URL
- 下方展示响应状态码和对应的响应体 - 有了 swagger,就可以非常方便的获取到接口的信息,有了这些信息,就可以设计测试用例
1.1.2、接口测试用例设计
- 宠物的 增、删、改、查 冒烟测试用例
- 模块+测试标题+优先级+前置条件+URL+请求方法+请求参数+预期结果+实际结果
1.1.3、编写断言
Tests 主要用来做断言,比如要测试返回结果是否含有某一字符串,就可以用到 Tests。
- 断言,就是结果和预期对比
- 如果一致,则用例通过,返回
PASS
- 如果不一致,断言失败,用例失败,失败返回
FAIL
test 中可以使用 JavaScript
脚本来进行断言的编写。如果本身不熟悉 JS
语法的话也没有关系,Postman 当中已经预置好了常用的断言。
断言模板:如下
-
验证响应状态码
Status Code:Code is 200
pm.test("响应状态码为 200", function () { pm.response.to.have.status(200); });
status
方法中传入的值200
就是预期结果,可以把括号中的状态码改为任意需要的值,比如400
。
-
检查响应体中是否包含某个字符串
Response Body:contains string
pm.test("响应体中包含预期的字符串", function () { pm.expect(pm.response.text()).to.include("doggie"); });
-
检测 JSON 中的某个值是否等于预期的值
Response Body:JSON value check
pm.test("宠物名称为 doggie", function () { var jsonData = pm.response.json(); pm.expect(jsonData[0].name).to.eql("doggie"); });
var jsonData
是定义了一个变量,然后把响应数据经过JSON
格式化之后,赋值给了定义好的变量。然后用
expect
这个方法,把响应数据中的url
这个key
中的值提取出来,用eql
这个方法去和括号中的字符串做比较,如果这两个值是一致的,返回true
,如果不一致就返回false
。
-
验证响应体是否与某个字符串完全相同
Response Body:Is equal to a string
这是一个全量的断言,把响应的数据和一个确定的字符串去做比较,如果完全相同返回pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); });
true
,不完全相同返回false
。
-
验证响应头信息中的 Content-Type 是否存在
Response Body:Content-Type header check
这个断言可以用来测试响应的头信息中是否包含某个字段,pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); });
Content-type
可以换位其他的字段
-
验证响应时间是否小于某个值
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
,如果没有超过返回true
,超过预设的值返回false