zoukankan      html  css  js  c++  java
  • postman简介

    postman是一款简单而又强大的网页调试和发送网页http请求的工具

    官方指导文档:https://learning.postman.com/docs/getting-started/introduction/

    1. 下载安装

    https://www.getpostman.com/downloads/

    支持mac、windows、linux,下载对应的版本

    下载后得到一个zip包,Postman-osx-7.27.1.zip,解压安装即可

    2. request四要素

    • 请求方法 (GET、POST、PUT、DELETE等)
    • 请求URL(如果是get请求,参数会自动解析在params中,也可以在params中编辑参数)
    • 请求头
    • 请求体(如果是post请求,请求体如果是json格式,选择raw,在最后面的下拉菜单中选择json)

    3. 变量

    postman中有四种变量:

    • 环境变量:例如,请求url中的ip地址或域名,让测试用例既可以在测试环境运行,也可以在预发环境运行
    • 全局变量:作用域是全局,可以在不同接口间传递参数,例如,token,将登陆返回的token做为全局变量供其他接口调用
    • 局部变量
    • 外部文件:例如,在run collections时,指定外部数据文件(csv或json格式),如批量登陆等

    优先级:外部文件 > 环境变量 > 全局变量 > 局部变量。也就是说,变量名相同的情况下,外部文件的变量的优先级最高,环境变量覆盖全局变量

    a)环境变量

    场景:当同一个请求需要在不同环境下(如:test、pre、prod)运行时,可以设置环境变量;使用时,只需切换环境即可,不需要重复构造请求

             在不同的环境,设置相同的变量名,变量值不同

             环境变量的值,随环境的切换而变化

    方法:可以先设置一个环境,然后在这个环境下设置一系列变量

      

    应用:使用该环境变量时,格式{{domain_name}}

         环境变量和全局变量,可以在请求的任何地方使用,却不能在pre-request和tests中使用,若要用,可以通过aaa = pm.globals.get("global_token")获取变量来使用

             

    b)全局变量

    场景:上个接口的出参,做为下个接口的入参

             全局变量不受环境切换影响,始终存在

    方法:在Tests中使用javaScript脚本设置(postman内置了node.js的运行时环境,可以执行js脚本)

             当发送请求时,脚本将被解析执行

             例如,获取响应体中的token,赋值给全局变量global_token

    //获取body中返回的所有参数
    var JsonData =JSON.parse(responseBody);
    
    //获取返回的auth_token值
    var global_token = JsonData.result.token;
    
    //将authorization的值设置为全局变量
    pm.globals.set("global_token", global_token);

     应用:使用该全局变量时,格式{{global_token}}

      

    c)局部变量

     场景:局部变量只针对单个URL请求设置的变量,作用域只局限在请求范围内

     方法:在Pre-request Script中设置,在请求执行前执行

              例如:设置用户名和密码,如下:

     

     应用:使用该局部变量时,格式{{username}}

              若该变量应用在请求体中,原有的引号不能丢

    d)外部文件

     场景:多账号登陆时(类似Jmeter中的参数化)

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

    json格式如下(loginAccount_json.json):

    csv格式如下(loginAccount.csv):

     txt格式如下(loginAccount.txt):

     应用:在run->collection中设置

      

    4. 构造请求

    当请求内容为file文件类型时(例如上传文件等),在headers中设置content-type为multipart/form-data

    在body中选择form-data,鼠标在key中悬浮,下拉框选择file类型,右侧等value会出现select files按钮,点击选择需要的文件即可

    5. 断言

    加上断言后,postman即可自动判断测试用例是否执行通过

    如下,是一些常用的断言方法:

    /////////////////////////////////  断言  ////////////////////////////////////////
    // 请求状态码,是否为200
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    
    // 请求状态码,是否为200、202中的一个
    pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([200,202]);
    });
    
    // 响应json值检查,loginId字段是否为zhangyang
    pm.test("检查loginId字段是否为zhangyang", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.result.loginId).to.eql('zhangyang');
    });
    
    // 响应体中是否包含指定字符串
    pm.test("检查响应体中是否包含ABC", function () {
        pm.expect(pm.response.text()).to.include("ABC");
    });
    
    // 响应头中是否包含指定字段
    pm.test("检查响应头中是否包含Content-Type字段", function () {
        pm.response.to.have.header("Content-Type");
    });
    
    // 响应时间是否在200ms以内
    pm.test("Response time is less than 200ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(200);
    });
    // 断言:检查status是否为200
    pm.test("检查status是否为200", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.status).to.eql(200);
    });
    
    // 断言:检查第一个药品名称是否为阿莫西林
    pm.test("检查第一个药品名称是否为阿莫西林", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.result.list[0].name).to.eql("阿莫西林"); //列表值用下标[n]取
        console.log("第一个药品的名称是:"+jsonData.result.list[0].name);  //打印信息到控制台
    });

    6. 控制台

    进入方式:

    a)菜单 -> view -> show postman console

    b)主界面左下角的控制台按钮

     

    应用:

    在Request中的Pre-request Script或者Tests里插入脚本console.log("variables")。当你发送请求时,此脚本将会执行,将参数对应的值打印到Postman Console中

    打开console,可以看到刚才的打印:

    7. 导入导出

    8. 更改执行顺序

    默认按照Collections中的顺序执行,若想修改执行顺序,可以按照如下三种方法来:

    1. 直接在collections中拖动请求,改变顺序

    2. 在runner中,请求左侧的位置,可以拖动改变执行顺序(不会改变collections中的顺序)

    3. 在请求的Tests中设置setNextRequest()来更改请求的执行顺序

    例如:collections中是顺序是A-B-C,在A中设置下一个请求是C

     执行结果:A-C

  • 相关阅读:
    【记录】用了七年eclipse突然改用IntelliJ IDEA------- 痛并快乐着
    【记录】集合Collection和Map整理 (看这一篇就够了)
    group by语句报with sql_mode=only_full_group_by错误
    linux下安装mysql二进制版本(5.6.34)
    linux下安装mysql二进制版本(5.7.11)
    表空间传输-例子2(full transportable)
    表空间传输-例子3(rman-transport获取传输表空间文件)
    transport_datafiles与FLASHBACK_SCN不能一起使用
    表空间传输数据文件转换
    12C添加pdb后创建用户没有相应的表空间
  • 原文地址:https://www.cnblogs.com/xiaochongc/p/14437211.html
Copyright © 2011-2022 走看看