Postman中断言的使用以及断言常用代码片段详解
首先,如果有开发经验或者测试的一些经验的话,对postman的使用情况都会有一些了解的:
- 在开发接口的时候需要快速的去调用接口,以便调试
- 在测试的时候需要非常方便的去调用接口,来通过各种不同的参数去测试接口的输出
- 有时有的接口调用是需要保存下来进行反复执行的
- 在接口测试的过程中添加一些断言(预期和真实运行的结果进行对比)
目录
3、发送GET请求并增加请求状态和对返回结果内容的断言并执行
Postman的实用资料:
postman官网及下载地址:https://www.getpostman.com/downloads/ (有MAC版和WIN版的,具体的安装步骤略过,安装完成后启动时会让注册账号和密码,可以点击下方的免费使用,如果想了解postman的更多功能的话,建议注册下,我已经注册,嘿嘿)
postman官方文档:https://learning.getpostman.com/docs/postman/launching-postman/installation-and-updates/
1、对Postman界面进行简单的了解
- 1、为历史记录,可以查看当天的以及以前调试的接口
- 2、为保存调试的接口
- 3、为邀请其他人加入
- 4、为新建一个api接口请求界面
- 5、为选择访问请求的方式
- 6、为输入api的url
- 7、为根据不同的情况设置不同的环境
- 8、发送请求
- 9、为发送请求时设置不同的参数
- 10、为获取API接口请求的结果
- 其中在10的地方有四种不同方式可以查看API接口请求的结果(Pretty、Raw、Preview、Visualize四种不同的模式)
2、断言界面介绍
- ① 为增加断言的区域
- ② 为常用的一些断言的代码片段(双击其中的一条后就会在 ① 中的区域出现)
- ③ 为发送get请求后返回的内容
3、发送GET请求并增加请求状态和对返回结果内容的断言并执行
调试的结果是:其中对返回内容条数的断言失败,但是中间有对返回内容的条数的打印情况可以进行查看
4、对断言中的打印结果进行查看
操作如下:
此时就会调出postman的调试结果窗口
发现返回的数据一共只有9条数据,红色框的窗口就是上一步操作出来的窗口
注:“===” 在js里面会看到
两个红色框中的断言内容其实都是一个意思,实现的功能是一样的,红色框 1 中的是以前的写法;红色框 2 中的内容是根据右面的常用断言的代码片段写出来的,既方便又快捷,只需要在里面添加代码就可以,常用的代码片段下面有详细的介绍哈
注:上面的红色框框中的断言写法(就是 1 中注释掉的那种写法),根据官方的介绍,1 中有的已经弃用了,有的不建议使用,建议大家采用 2 中写法
5、常用断言代码片段介绍
常用代码断言片段 | 含义 | 代码片段示例 |
get an environment variable | 获取环境变量 | pm.environment.get("variable_key") |
get a global variable | 获取全局变量 | pm.globals.get("variable_key") |
get a variable | 获取变量 | pm.variables.get("variable_key") |
set an environment variable | 设置环境变量 | pm.environment.set("variable_key", "variable_value") |
set a global variable | 设置全局变量 | pm.globals.set("variable_key", "variable_value") |
clear an environment variable | 清除环境变量 | pm.environment.unset("variable_key") |
clear a global variable | 清除全局变量 | pm.globals.unset("variable_key") |
Send a request | 发送一个异步请求 | pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(response.json()); }) |
Status code : Code is 200 | 检查请求的状态码是否为200 | pm.test("Status code is 200", function () { pm.response.to.have.status(200); }) |
Response body: Contains string | 检查响应中是否包含 string | pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("string_you_want_to_search"); }) |
Response body: JSON value check | 检查JSON某个字段的值 | pm.test("Your test name", function () { var jsonData = pm.response.json(); pm.expect(jsonData.value).to.eql(100); }) |
Response body: Is equal to a string | 检查响应body中等于指定的 string | pm.test("Body is correct", function () { pm.response.to.have.body("response_body_string"); }) |
Response headers: Content-Type header check | 检查Content—Type是否包含在header的返回值中 | pm.test("Content-Type is present", function () { pm.response.to.have.header("Content-Type"); }) |
Response time is less than 200ms | 检查请求的耗时时间是否为200ms | pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200); }); |
Status code: Successful POST request | 检查post请求成功的状态码 | pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202]); }) |
Status code: Code name has string | 检查code name 的值是否为指定的 string | pm.test("Status code name has string", function () { pm.response.to.have.status("Created"); }) |
Response body: Convert XML body to a JSON Object | 将XML格式的响应体转换成JSON对象 | var jsonObject = xml2Json(responseBody) |
Use Tiny Validator for JSON data | 对响应的结构使用TV4进行JSON模式验证 |
var schema = { var data1 = [true, false]; pm.test('Schema is valid', function() { |