用 Postman 做接口自动化(十一)变量使用

前面讲了如何定义变量以及讲解了 Postman 中内置的随机变量。

那么如何使用这些变量呢?

首先变量要遵循我们前面提到的优先级:

局部变量 local > data 文件中的变量 data > 环境变量 environment > Collection 中的变量 collection > 全局变量 global

内置变量 dynamic 是全局变量,但是你只要不是非要把变量名设置成和内置变量一样,那么就不用关注它。

优先级是针对不同级别的变量中都设置了相同的变量名的情况,在使用时才会有优先级之分,如果每个环境的变量名不同,那么也不会互相影响。

只是说在遇到变量时,找变量的过程是从局部到全局的顺序,在某一级找到对应的变量名,就会使用哪一级的变量。

使用变量有两种方式,一种是在请求中使用,另一种是在代码(Pre-request Script 和 Tests)中使用。

在请求中使用

在请求中使用变量 variable,使用两对大括号标识{{变量名}}

比如有一个变量值为name=nemo(参考各种变量的设置方法),在某请求的 url 中使用这个变量http://{{name}}.test,那么当发送请求的时候,Postman 就会获取对应的变量值,替换该 url 为 http://nemo.test

变量可以在请求的任意位置使用,比如 url,params,headers,body,authorization 中使用,如下图中红框标注,使用方式均为{{变量名}}的形式。

下面是一个实际使用的例子:

以下是变量设置、变量使用及实际运行时的变量取值的综合图:

图片说明:

  1. 上图中设置了一个名为 test 的环境,其中有三个变量,分别是hostpathvalue
  2. 新建了一个请求,名为POST Form Data的请求,其中 URL 使用了hostpath两个变量,body 中使用了value变量;
  3. 最后运行请求后,三个变量都由环境中设置的值替换。

除了局部变量外,其他变量都可以通过这种方式使用。

在代码(Pre-request Script 和 Tests)中使用变量

在代码中调用变量,需要使用 Postman 预设的代码pm.environment.get("变量名"),以上面的请求和变量为例:

var v = pm.environment.get("value"); // 获取环境变量 value 的值并存在局部变量 v 中

console.log('value变量的值为:', value)  // 打印变量值

环境变量和全局变量必须使用预设的代码获取:

  • 环境变量:pm.environment.get("变量名")
  • 全局变量:pm.globals.get("变量名")
    上述代码都可以从 Tests 右侧的预设代码中获取:

还有一种变量在 Tests 中使用也需要通过代码获取,那就是通过数据文件传递的 Data 变量,其使用的预设代码为:

pm.iterationData.get("变量名")

内置变量使用

前面我们讲到 Postman 中有很多内置变量,用来生成随机数据。这些内置变量只能用于请求中的 URL / headers / body 中使用,不能在代码中使用。

在请求中使用:

### 优点分析 Postman接口自动化测试方面具有显著的优势,特别是在易用性和功能集成上。其直观的用户界面使得接口调试变得简单,即使是非技术人员也能快速上手。此外,Postman 支持脚本编写,尤其是 JavaScript,这使得用户可以在 `Tests` 标签中编写逻辑判断代码,用于验证接口返回结果[^3]。Postman 还支持环境变量和预请求脚本(Pre-request Script),这为接口之间的参数化和动态数据处理提供了便利,能够应对大部分接口测试需求,例如生成时间戳或进行 MD5 加密签名[^4]。 另一个显著优势是 Postman 的测试自动化能力。用户可以将多个接口请求组织成集合(Collection),并通过 Runner 功能批量执行测试,实现接口自动化测试。此外,Postman 还支持与 Jenkins 等持续集成工具集成,便于构建自动化测试流水线[^2]。 ### 缺点分析 尽管 Postman接口测试方面功能强大,但它并非完美无缺。一个主要的局限性是其在性能测试方面的不足。Postman 并不适合进行大规模的性能数据分析,例如高并发请求或负载测试。虽然新版本在一定程度上增强了这方面的功能,但相比专业的性能测试工具如 JMeter,其能力仍然有限[^1]。 此外,对于习惯使用其他工具或编程语言(如 Python)的用户来说,Postman 的脚本编写方式(仅支持 JavaScript)可能会带来一定的学习成本。虽然 JavaScript 的使用简化了测试脚本的编写,但对于需要更复杂逻辑处理的测试场景,其灵活性可能不如 Python 等语言。 ### 代码示例:Postman 中的测试脚本 以下是一个简单的 Postman 测试脚本示例,用于验证接口返回状态码和响应内容: ```javascript // 检查响应状态码是否为 200 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); // 检查响应体是否包含特定字段 pm.test("Response has 'id' field", function () { var jsonData = pm.response.json(); pm.expect(jsonData).to.have.property('id'); }); ``` 上述脚本展示了如何在 Postman 的 `Tests` 标签中编写 JavaScript 代码,以验证接口返回的数据是否符合预期。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值