企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
##### 1. 简介 > 使用postman工具进行接口自动化测试的时候,我们经常需要增加断言来判断,结果到底是成功还是失败。 如果不加断言,但在`collection runner/Newman`里跑完之后,无法知道接口测试是成功还是失败。 在postman工具中,断言是写在`tests标签页`里面的,对于刚上手的新手来说可以参考文档和界面右边的代码模板。 范例: ~~~ tests['Status code is 200'] = responseCode.code === 200; // 推荐用全等 ===,确保类型和值都一致 tests['Response time is less than 200ms'] = responseTime < 200; tests['Body matches string'] = responseBody.has('xxx'); // 只要有指定关键字就行,在哪、有几个等都不管 tests['Content-Type is present'] = postman.getResponseHeader('Content-Type') || false; ~~~ `Postman`的断言实际上就是往全局对象 `tests` 添加键值对。它的`key`会显示在报告界面上,`value`是可以解析为`boolean`的表达式。如果得出的值是true,在报告里就会显示为成功,`false`失败。 ##### 2. 用总是为真的断言来显示信息 ~~~ // 显示所有请求参数(在自动化测试里很有用) tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true; // 迭代次数 iteration 是Postman提供的全局变量,从0开始,用在runner里循环很多次时 tests[`跑第${iteration + 1}次`] = true; ~~~ PS:`request`是`Postman`提供的全局对象 : responseCode(对象)、responseTime(数字)、responseBody(字符串)是Postman收到服务器返回内容才声明的变量。 > 【注意】如果你在做自动化测试,目前在接口超时没返回时: responseCode、responseTime、responseBody都没定义,使用时会导致脚本出错,判断是否超时没返回的只能靠header。 request.data里的变量在超时时不解析,很容易让人误会请求参数传错了,建议此时不显示这行 。