zoukankan      html  css  js  c++  java
  • 【postman】postman使用教程

    postman基础功能

    一、变量设置

    编写的API往往需要在多个环境下执行,而Postman 提供了两种类型的变量:环境变量和全局变量,从而很好的解决了这个问题。同时变量还常用于关联接口间的参数传递。

    环境变量有效范围仅仅在于当前集合可用,全局变量对所有的集合都可用。

    1.环境变量

    1)手动创建

    api可能需要在不同的环境中运行,所以api请求的服务器地址不能写死,希望是可以配置的,创建环境变量有多种方式

     2)代码创建

    在pre-request scripts中输入创建环境变量的命令,请求发起前后,在environment management中会新增该变量(也可在Tests中创建环境变量,不过该变量在请求发起后生效)

     二、全局变量

    与环境变量类似,也可以通过手工和代码创建

    三、设置代理

    应该时类似与fiddler的抓包吧

    1.在postman中设置端口号、保存位置、筛选条件

    2.设置本机代理服务器

     

     

    postman高级应用

    一、Scripts

    Postman运行过程是基于强大的 Node.js,可以在请求发起前(Pre-request Script)和拿到请求返回后(Tests),通过编写JavaScript来实现请求间数据传递,请求参数动态生成等等。

    Pre-request Script 和 Tests 可以在集合(Collections)、夹(Folder)、请求(Request)中设置。

    1.脚本执行顺序

    集合pre → 夹pre → 请求pre → Request → Response → 集合Tests → 夹Tests → 请求Tests

    2.Tests

    场景1:API间参数传递

    如想要将登录接口响应的sessionid应用与所有请求的请求头中

    response header

    为了获得sessionid的值,并写入环境变量,我们可以在Tests 中加入如下脚本

    1 //获取响应头中“set-cookie”的value
    2 var jsonData = postman.getResponseHeader("Set-Cookie");
    3 console.log(jsonData);
    4 //以;分隔字符串并取sessionid
    5 cookie=jsonData.split(";")[0];
    6 //设置环境变量
    7 pm.environment.set("cookie", cookie);

    场景2:response校验

    responseHeaders[String]  {Object}:获取response的头部信息使用postman.getResponseHeader(‘xxx’)。

    console.log(responseHeaders)
    console.log(responseHeaders['Content-Type'])
    console.log(postman.getResponseHeader('Content-Type'))
    • responseCookies {Array}:返回一个数组,可以通过postman.getResponseCookie(cookieName) 获取具体的cookie信息。
    • responseBody {string}:返回响应正文文本的字符串。可以用JSON.parse()转成数组。
    • responseTime {number}:返回响应时间,单位ms
    • responseCode[String] {Object}:返回的状态码,不带参数会返回4个属性。 常用的属性是 code 就是状态码。
    console.log(responseCode)
      console.log(responseCode['code'])
    • 设置环境变量
    pm.environment.set("variable_key", "variable_value");
    • 获取环境变量
    pm.environment.get("variable_key");
    • 清除环境变量
    pm.environment.unset("variable_key");
    • 设置全局变量
    pm.globals.set("variable_key", "variable_value");
    • 获取全局变量
    pm.globals.get("variable_key");
    • 清除全局变量
    pm.globals.unset("variable_key");
    • 获取一个变量:这个将从环境变量和全局变量中搜索变量,优先从环境变量中搜索 
    pm.variables.get("variable_key");
    • 发起一个请求:
    pm.sendRequest("https://postman-echo.com/get", function (err, response) {
        console.log(response.json());
    });
    • 检查response body是否包含某个字符串
    pm.test("Body matches string", function () {
          pm.expect(pm.response.text()).to.include("string_you_want_to_search");
      });
    • 检查response body是否等于某个字符串
    pm.test("Body is correct", function () {
          pm.response.to.have.body("response_body_string");
      });
    • 检查JSON值
    pm.test("Your test name", function () {
          var jsonData = pm.response.json();
          pm.expect(jsonData.value).to.eql(100);
      });
    • 校验某结果类型是否存在:如下是说response header包含Content-Type 
    pm.test("Content-Type is present", function () {
          pm.response.to.have.header("Content-Type");
      });
    • 响应时间小于200毫秒 
    pm.test("Response time is less than 200ms", function () {
          pm.expect(pm.response.responseTime).to.be.below(200);
      });
    • 状态代码是200
    pm.test("Status code is 200", function () {
          pm.response.to.have.status(200);
      });
    • 校验某对象是否包含某个字符串:例如下面校验response的body 包含 msg 属性
    pm.test("Body is correct", function () {
          pm.response.to.have.body("msg");
      });
    • 校验结果在某范围中:如下校验请求状态码是201,202
    pm.test("Successful POST request", function () {
          pm.expect(pm.response.code).to.be.oneOf([201,202]);
      });
    • 将XML主体转换为JSON对象:
    var jsonObject = xml2Json(responseBody);

     3.pre-request scripts

    场景3:自定义变量

    场景4:接口依赖

    例如我们调用LogOut的 API时,往往需要先执行LogIn的API,这时我们可以再pre-request script中编写个调用LogIn的API,先生成一条数据。

     1 //发送get请求
     2 // pm.sendRequest("https://postman-echo.com/get", function (err, response) {
     3 //     console.log(response.json());
     4 // });
     5 
     6 //发送post请求
     7 const regRequest={
     8     url: "http://127.0.0.1:8081/api/accounts/login/",
     9     method: "POST",
    10     header:'Content-Type: application/json',//在header中声明使用类型
    11     body: {
    12           mode: 'raw',//使用raw原始模式
    13           raw:JSON.stringify({"username":"admin","password":"admin"})//将json对象转化为文本发送
    14         //   mode: 'urlencoded',//使用raw原始模式
    15         //   urlencoded:[{key:"username",value:"admin"},{key:"password",value:"admin"}]
    16     }
    17 };
    18 pm.sendRequest(regRequest, function (err, response) {
    19     console.log(response.json());
    20 });

     跟Tests脚本类似,除了Response相关的不支持外,基本都支持。

    二、Runner

     1.批量运行

    • 选取一个集合
    • 选择环境变量
    • 设置每个请求间隔时间(可不设置)
    • 点击 Run

    运行界面可以查看每个请求的信息(如果Log Response设置为For no requests)则看不到任何的请求返回

    2.数据驱动

    数据驱动方式除了用于批量测试等价类的测试用例,更常用于通过接口批量造数据

    下面我们就以批量测试等价类用例为例子讲解,批量造数据也是类似做法无非过程时常需要调用多个接口罢了。

    假设有如下一个登录接口,我需要用不同的账号密码测试登录。

    • 那么第一步我们可以本地创建一个Json或者csv文件,设定username和password两个字段,并设置要运行的测试值:

        json/csv格式

             

    • 设置请求参数,通过{{变量名}}获取文件中的参数值

    • Runer运行,设定Data,选择你的csv或json文件后会自动帮你统计出 Iterrations,并可以通过Preview 预览数据源

    • 点击run,可以结果页面看到我们一个api发起了3次请求,并每次请求都从数据源拿去一条对应的数据

  • 相关阅读:
    Cannot get a NUMERIC value from a STRING cell? 已解决
    Android Studio快捷键大全
    mysql索引
    eclipse中出现错误 Syntax error, insert "}" to complete Block
    function
    IGS OPC UA 配置
    IFIX 5.9 历史数据 曲线 (非SQL模式)
    IFIX 5.9 报警存sql
    IFIX 数据源 节点 标签 域名
    IFIX 目录结构
  • 原文地址:https://www.cnblogs.com/dhs94/p/11135894.html
Copyright © 2011-2022 走看看