美文网首页接口测试
[PPJ_06] Postman四种变量类型的配置实践

[PPJ_06] Postman四种变量类型的配置实践

作者: Fighting_001 | 来源:发表于2018-10-05 22:29 被阅读181次

    目录结构

    一、Postman变量简介
        1. 变量引入
        2. Postman变量类型
    二、Postman变量类型
        1. 环境变量(Environment Variable)
        2. 本地变量(Local Variable)
        3. 全局变量(Global Variable)
        4. 数据变量(Data Variable)
    

    一、Postman变量简介

    1. 变量引入

    在软件开发的不同阶段,一般都会存在不同的环境,如:测试环境和生产环境。

    环境 API
    测试环境 https://test.postman.com
    生产环境 https://postman-echo.com

    按照常规思路,一种方式是需要维护2套环境的API,另一种方式是每次都需要手动逐个去修改URL。不管哪种选择都比较麻烦且低效,Postman提供了一套比较好的方法通过配置Environment来解决这个问题。

    2. Postman变量类型

    以上两组API主要区别在于host不同,只要把host用变量替换,就可以灵活切换到不同的环境。Postman提供了变量设置,有4种变量类型:

    • 环境变量(Environment Variable)
    • 本地变量(Local Variable)
    • 全局变量(Global Variable)
    • 数据变量(Data Variable)

    二、Postman变量类型

    1. 环境变量(Environment Variable)

    环境变量:指在不同环境下,同一个变量值随着环境的不同而变化。

    测试环境,host值:test.postman.com
    生产环境,host值:postman-echo.com

    环境变量设置:

    在Postman界面右上角,点击"眼睛"图标,即可开始设置环境变量和全局变量。此时需要对环境变量设置2种环境:test环境、release环境(test——开发测试环境,release——正式的生产环境)。

    分别添加test环境、release环境的host环境变量

    host环境变量添加完成

    切换环境,再次点击"眼睛"图标,即可查看到当前所选择的环境的host指向

    引用环境变量:
    变量引用的格式为:{{variable_name}}
    切换到release环境,然后设置请求URL:{{host}}/get
    即所请求的url为:http://postman-echo.com/get

    2. 本地变量(Local Variable)

    本地变量:主要是针对单个URL请求设置的变量,作用域只是局限在请求范围内。

    案例:
    请求URL:https://postman-echo.com/post
    请求方式:POST
    设置两个本地变量(uname、pwd)作为参数

    变量引用的格式为:{{variable_name}}

    1)POST请求方式

    变量设置好之后,需要对变量赋值,在【Pre-request Script】里面编写代码:

    pm.variables.set("uname","test00001");
    pm.variables.set("pwd","123456");
    

    点击【Send】发送请求,返回结果:

    2)GET请求方式

    若为GET请求方式,则请求URL:
    https://postman-echo.com/get?uname={{uname}}&pwd={{pwd}}

    返回结果:

    {
        "args": {
            "uname": "test00001",
            "pwd": "123456"
        },
        "headers": {
            "host": "postman-echo.com",
            "accept": "*/*",
            "accept-encoding": "gzip, deflate",
            "cache-control": "no-cache",
            "content-type": "application/x-www-form-urlencoded",
            "cookie": "sails.sid=s%3AKiH3ogBe_EPs7Mf2P1uYjp7LK8HVBilr.IjeuDoWIgYO1jORsVI1NxQUHOPzcGmixkHSg08ChiPE; uid=123",
            "postman-token": "b7c4b8f6-001a-485e-be5d-4f380881c0fe",
            "user-agent": "PostmanRuntime/7.3.0",
            "x-forwarded-port": "443",
            "x-forwarded-proto": "https"
        },
        "url": "https://postman-echo.com/get?uname=test00001&pwd=123456"
    }
    

    OR
    切换到release环境之后,设置URL为:{{host}}/get?uname={{uname}}&pwd={{pwd}},然后再发送请求,返回结果如下:

    3. 全局变量(Global Variable)

    全局变量:是指在所有的环境里变量值都是一样的,全局变量的作用域是所有请求。

    全局变量设置有两种方式:

    • 界面设置
    • 脚本设置
    1. 界面设置

    点击"眼睛"图标,在Global选项菜单点击【Edit】,即可设置全局变量。全局变量的引用格式和环境变量一样
    PS:当环境变量和全局变量名称一样时,切换到某个环境时,环境变量会覆盖全局变量。

    2. 脚本设置

    使用脚本可以设置全局变量,如:

    pm.globals.set("variable_key","variable_value");
    

    variable_key表示变量名,variable_value表示变量值

    接口关联

    在实际接口测试过程中,接口经常会有关联。比如需要获取上一个接口的某个返回值,然后作为参数传递到下一个接口作为参数。

    案例:获取接口A返回的aaa_id值,作为接口B发送请求的参数。

    【API_A】
    接口A-请求URL:https://postman-echo.com/post
    请求方式:POST
    请求参数:自定义aaa_id
    (接口A会返回对应的aaa_id值)

    自定义aaa_id=666,发送请求,查看返回结果:

    {
        "args": {},
        "data": "",
        "files": {},
        "form": {
            "aaa_id": "666"
        },
        "headers": {
            "host": "postman-echo.com",
            "content-length": "10",
            "accept": "*/*",
            "accept-encoding": "gzip, deflate",
            "cache-control": "no-cache",
            "content-type": "application/x-www-form-urlencoded",
            "cookie": "sails.sid=s%3ADDGuTPQ96bofK0kB65xl8X7h_yJP3yG5.HDIg%2FXrBonHeS1UMMgAbAN5w3uVVB38Qq7AN1vMh%2BGM; uid=123",
            "postman-token": "4c1c4272-6fbc-45bd-bd5f-b384a9ea3ebf",
            "user-agent": "PostmanRuntime/7.3.0",
            "x-forwarded-port": "443",
            "x-forwarded-proto": "https"
        },
        "json": {
            "aaa_id": "666"
        },
        "url": "https://postman-echo.com/post"
    }
    

    根据以上返回值,需要从中提取aaa_id值,并赋值给全局变量global_id存储,然后传递到接口B中作为参数发送请求。

    在【Test】标签(专门对返回响应数据进行处理的栏目)栏目编写脚本:

    //获取返回的响应值,并转化为json格式,赋给变量jsonData
    var jsonData = pm.response.json();
    
    //获取返回的uid值,赋给变量global_id存储
    var global_id = jsonData.json['aaa_id'];
    
    //在Postman控制台日志输出global_id的值
    console.log(global_id);
    
    //将global_id值设置为全局变量
    pm.globals.set("global_id",global_id);
    

    【API_B】
    接口B-请求URL:https://postman-echo.com/get?bbb_id={{global_id}}
    请求方式:GET

    依次发送请求:【API_A】--->【API_B】

    接口B的返回数据:

    {
        "args": {
            "bbb_id": "666"
        },
        "headers": {
            "host": "postman-echo.com",
            "accept": "*/*",
            "accept-encoding": "gzip, deflate",
            "cache-control": "no-cache",
            "cookie": "sails.sid=s%3ADwYtD_YLprrYUCGmdL1ETT2E3DzbfCGW.TI9hVnILs6KMNS%2BaM9m8NZaNCKhPffrgsL12ikhwC%2Fw; uid=123",
            "postman-token": "d6a7b7d8-ecf9-4461-816a-943aae1d3671",
            "user-agent": "PostmanRuntime/7.3.0",
            "x-forwarded-port": "443",
            "x-forwarded-proto": "https"
        },
        "url": "https://postman-echo.com/get?bbb_id=666"
    }
    

    查看Postman Console监控结果:

    查看Postman界面Global变量区域:

    ==> 以上,实现了接口A和接口B之间的关联效果

    4. 数据变量(Data Variable)

    数据变量:通过导入外部数据文件(json/csv文件),来获取变量的数据。

    创建一个json文件,如:data.json

    [
    {"uname":"test00001","pwd":"123456"},
    {"uname":"test00002","pwd":"123456"},
    {"uname":"test00003","pwd":"123456"}
    ]
    

    相关文章

      网友评论

        本文标题:[PPJ_06] Postman四种变量类型的配置实践

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