美文网首页
接口测试教程 - PostMan(九)变量设置

接口测试教程 - PostMan(九)变量设置

作者: 猫与测试 | 来源:发表于2019-09-26 21:25 被阅读0次

    接触过任何语言类和一些测试工具的同学应该都知道变量这个概念。

    变量是用来存储动态值的静态标识符。变量标识的信息可以更改,但是对变量的操作保持不变。

    Postman 中的变量也是如此。我们可以在多个位置重用变量值。如果变量的值发生变化,变量的每个实例都会相应的更改,从而减少了重复修改的需要和出错的可能性。

    比如,我们的所有接口都是同一个域名http://nemo.test,但这个域名可能会变,比如我们运行在开发环境的时候,域名会变为 http://nemo.dev ,如果我们不使用变量而是老老实实写的话。当我们写上几十上百个请求的时候,此时如果需要在不同的环境中运行时,将会是一个噩梦,你需要逐一修改每个请求的 Host。

    我们还可以通过变量从一个请求中获取数据,在另一个请求中使用它们。这就是依赖的处理,后面的章节会再讲。

    简而言之,使用变量有如下好处:

    • 重用数据使代码(请求)保持DRY(don't repeat yourself 不要自我重复);
    • 配置不同的设置以使用不同的环境;
    • 从 Collection 中的响应中提取数据供后续请求使用。

    在 Postman 中有以下几种变量:

    • 局部变量 local
    • data 文件中的变量 data
    • 环境变量 environment
    • Collection 中的变量 collection
    • 全局变量 global
    • 内置变量 dynamic

    除局部变量以外的其他变量值只能是字符串,如果要存储对象或者其他数据类型的数据,需要先转换为字符串(JSON.stringify()),然后在使用时转换回去(JSON.parse())。

    变量优先级

    以下的图可以说明变量的优先级,越外层的变量优先级越低。

    比如同一个变量名 host,在 environment 和 global 中分别设置了不同的值,那么最终运行请求的时候,实际使用的是 environment 中的值,因为 environment 变量的优先级比 global 更高。

    设置变量

    我们先了解一下如何设置这些变量,有部分内容已经在前面提到过了,另外内置变量由 Postman 提供不需要设置。

    1. 局部变量 local variable

    局部变量是在代码(Pre-request,Tests)中设置的。使用 JavaScript 的变量语法即可。

    其优先级最高,但是仅在当前的脚本环境中有效,对于上图中的json变量,只在当前请求的 Tests 中的脚本有效。

    data 文件中的变量 data

    在 Collection 运行中我们讲过可以加载数据驱动的文件(CSV,JSON)中的值。

    上图中通过加载的数据文件中读取出的三个变量pathvaluep

    环境变量 environment

    环境变量可以通过两种方式设置,一种是上一节讲过的在环境设置中进行设置:

    上图中设置了一个变量host,其值为http://127.0.0.1

    另一种设置环境变量的方法是,在代码(Pre-request,Tests)中设置。

    上图中通过代码设置了一个变量 db_host,其值为 192.168.1.222

    Collection 中的变量 collection

    在 Collection 中可以设置变量,设置的方法是在 Collection 编辑界面的 Variables选项卡中:

    上图中设置了一个 Collection 变量 path,其值为 post

    也可以看到这里的设置界面很类似环境变量的设置。

    全局变量 global

    全局变量的设置类似环境变量的设置,也有两种方式。

    一种方法,那就是通过代码(Pre-request,Tests)设置。

    上图中通过代码设置了一个全局变量 username, 其值为nemo

    另一种方法是在环境设置(就是设置环境变量那个地方)界面进行设置:

    上图中设置了全局变量PI,其值为 3.14159265358

    相关文章

      网友评论

          本文标题:接口测试教程 - PostMan(九)变量设置

          本文链接:https://www.haomeiwen.com/subject/xribuctx.html