Postman 是一款广泛使用的 API 开发工具。其中,Test 功能是 Postman 的核心功能之一,它可以用来测试 API 的可靠性和准确性。要使用这个功能,需要编写 Test 脚本。那么该如何编写 Postman Test 脚本呢?
什么是 Postman Test 功能?
Test 功能是 Postman 的核心功能之一,它允许用户在发送请求后验证响应是否符合预期,帮助用户测试API的可靠性和准确性,以及确保 API 在不同的环境中都能正常工作。通过使用Test功能,用户可以自动化测试API,从而提高测试效率。
Postman Test 脚本如何编写?
要写 Test 脚本,首先要知道 pm对象,即包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接受到的响应,它还允许获取和设置环境变量和全局变量。Postman 会提供一些常用的脚本用户使用,但如果希望能覆盖更多场景,还是要掌握 pm 函数。
Postman 的 Test 校验主要用于测试断言校验,帮助快速判断结果。主要用到的函数如下:
方法 | 描述 |
---|---|
pm.test("testName", specFunction) | 用于创建一个测试。 |
pm.expect(assertion:*) | 用于处理来自响应或变量的数据断言。 |
举个例子:
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("DONE");
});
其中,响应断言包含:
pm.response.to
方法 | 描述 |
---|---|
pm.response.to.have.status(code:Number) | 根据状态码判断响应是否成功 |
pm.response.to.have.status(reason:String) | 根据返回的状态值判断响应是否成功 |
pm.response.to.have.header(key:String) | 根据 response 中的 headers 的 key 判断响应是否成功 |
pm.response.to.have.header(key:String, optionalValue:String) | 对 response 中的 header 中的 key 和 value 校验,判断响应是否成功 |
pm.response.to.have.body() | 获取响应返回的资源 |
m.response.to.have.body(optionalValue:String) | 对响应返回的 body 内容校验,判断响应是否成功 |
pm.response.to.have.body(optionalValue:RegExp) | 判断响应返回的 body 是否是 json,判断响应是否成功 |
举个例子:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
pm.test("Status code name has string", function () {
pm.response.to.have.status("OK");
});
pm.test("Body", function () {
pm.response.to.have.body();
});
其他方法
pm.info 对象
方法 | 描述 |
---|---|
pm.info.eventName | 输出脚本是在哪个脚本栏中执行的 |
pm.info.iteration | 输出当前运行迭代的次数(从0开始) |
pm.info.iterationCount | 输出计划运行的迭代总数 |
pm.info.requestName | 返回请求名 |
pm.info.requestId | 返回请求 ID |
pm.globals 对象
方法 | 描述 |
---|---|
pm.globals.has("variableName") | 验证是否存在该全局变量 |
pm.globals.get("variableName") | 获取执行全局变量的值 |
pm.globals.set("variableName","variableValue") | 设置全局变量 |
pm.globals.unset("variableName") | 清除指定的全局变量 |
pm.globals.clear() | 清除全部全局变量 |
pm.globals.toObject() | 将全局变量以一个对象的方式全部输出 |
pm.environment 对象
方法 | 描述 |
---|---|
pm.environment.has("variableName") | 检测环境变量是否包含某个变量 |
pm.environment.get("variableName") | 获取环境变量中的某个值 |
pm.environment.set("variableName","variableValue") | 为某个环境变量设置值 |
pm.environment.unset("variableName") | 清除某个环境变量 |
pm.environment.clear() | 清除全部环境变量 |
pm.environment.toObject() | 将环境变量以一个对象的方式全部输出 |
pm.variables对象
方法 | 描述 |
---|---|
pm.variables.get("variableName") | 获取变量中的某个值(迭代数据<环境变量<全局变量) |
pm.request 对象
方法 | 描述 |
---|---|
pm.request | 获取当前发起请求的全部 headers(参数只可读) |
pm.request.url | 获取当前发起请求的 url |
pm.request.headers | 以数组的方式返回当前请求中的 header 信息 |
pm.response 对象
方法 | 描述 |
---|---|
pm.response.code | 获取当前请求返回的状态码如200,404,500等 |
pm.response.reason() | 当前请求成功返回 OK |
pm.response.headers | 以数组的形式返回当前请求成功后的 response 的 headers |
pm.response.responseTime | 获取执行此次请求的时间单位为 ms |
pm.response.text() | 以文本的方式获取响应里面的 body的内容 |
pm.response.json() | 将 body 里面的内容解析为一个 json对象 |
pm.cookies 对象
方法 | 描述 |
---|---|
pm.cookies.has("cookieName") | 检查请求的 url 站点是否存在 cookie,返回值 Boolean |
pm.cookies.get("cookieName") | 获取存在的 cookie 的值 |
pm.cookies.toObject | 将请求的 url 站点中获取到的所有存在的 cookie 输出到一个对象中去 |
pm.iterationData 对象
方法 | 描述 |
---|---|
pm.iterationData.get("variable") | 获取指定变量的值 |
pm.iterationData.toObject | 将数据文件集转化成一个对象 |
总结
Postman Test 脚本功能可以帮助用户更加灵活地测试 API 的可靠性和准确性,提高测试的效率和准确性,帮助用户快速编写测试用例,并对 API 进行全面的测试。更多内容可以前往 Postman 官方文档查看。
但是 Postman 官方的文档并没有详细介绍每个函数的使用示例,但我发现 Apifox 有详细的文档展示(https://www.apifox.cn/help/app/scripts/examples/tests/)。
Apifox Test 校验功能与 Postman 是一致的,甚至在会有更详细的断言结果展示与示例脚本。Apifox 详细为每个断言请求举实例帮助用户理解。Apifox 是在 Postman 基础上进行了能力升级,能解决使用 Postman 后会出现的在多个工具之间频繁切换导致数据不一致的问题。
如果你对于 Postman 的 Test 校验功能不太熟悉,那么 Apifox Test 校验可以帮助你快速掌握 Test 校验功能,它可以帮助您快速检测问题并提高开发效率。免费使用,赶紧试试吧,点击免费使用。
知识扩展:
了解更多 Postman 相关使用技巧: