• Postman (二)


    一、Postman 请求生命周期

    在 Postman 中,一个完整的 Postman 请求生命周期,除了常规的请求(request)和响应(response),还包括前置请求脚本(pre-request script)和后置测试脚本(tests script)。Postman 包含一个基于 Node.js 的强大运行态(runtime),允许用户在 pre-request script 和 tests 事件中编写 JavaScript 代码,允许您向请求和集合添加动态行为。这允许您编写测试套件、构建可以包含动态参数的请求、在请求之间传递数据等等。

    如我们在Postman请求中 一个接口的响应做为下一个接口的入参



    二、断言

    我们进行接口测试时,添加断言时必不可少的,
    断言:就是判断测试的结果与预期返回是否一致,如果一致,我们即这个测试用例通过!

    Status code is 200   检查返回的状态码是否为200
    Response body:Contains string   检查响应中包括指导字符串
    Response body:JSON value check   检查响应中Json的值
    Response body:is equal to a string 检查响应是否等于一个字符串
    Response headers:Content-Type header check  检查是否包含响应头Content-Type
    Response time is less than 200ms  检查响应时间是否小于200ms
    
    

    我们常用的断言一般有:
    断言响应状态码
    断言响应内容
    断言响应时间范围

    更多参考:官方文档

    2.1、断言状态码

    我们可以通过接口响应的状态码 来判断一个请求的状态,我们这里通过判断状态码 是否返回 200

    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    

    2.2、断言响应内容

    // 检查响应主体是否包含一个字符串
    pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("string_you_want_to_search");
    });
    



    // 检查响应正文中的特定值
    pm.test("Person is Jane", () => {
      const responseJson = pm.response.json();
      pm.expect(responseJson.name).to.eql("Jane");
      pm.expect(responseJson.age).to.eql(23);
    });
    


    2.3、断言响应时间

    pm.test("Response time is less than 200ms", () => {
      pm.expect(pm.response.responseTime).to.be.below(200);
    });
    

    2.4、全局断言+动态参数

    有些断言,如果是每一个请求都需要加的,我们就可以把他抽离出来,放在集合里的 TestScript 里面,
    然后在这个集合下面的每一个请求 都会包括此断言

    三、运行一个集合

    我们前面都是对单个api的测试,如果想一次性执行多个api 我们可以把多个api放在集合里,整体运行,可以整体对 迭代次数、延迟时间 进行配置。



    3.1 构建工作流

    在我们执行一个集合的时候,集合下请求的顺序 就是请求在Collection中的显示排列的顺序,当我们想按照自己的顺序执行时,我们可以拖拽顺序排列,但是有时候,当集合里面的请求非常多的时候,我们每次拖动可能会比较麻烦,而且后面可能也不会太准确,我们就可以用另一种方法脚本设置

    先下载官方案例文件:collection.json
    官方文档:构建工作流

    如我们想要执行顺序:Request 1 > Request 4 > Request 3 > Request 2

    我要需要用到一个方法,指向请求顺序

    postman.setNextRequest('Request 3')
    
    

    我们要在Request 1 请求的 Test Script里面指定 下一个请求

    Request 4 指向 Request 3

    Request 3 指向 Request 2

    Request 2 是最后一个响应 我们要终止了 用到 :

    postman.setNextRequest(null)
    

    四、数据驱动

    当一个接口需要测试很多不同的参数组合时,若采用逐个修改参数值来测试的方式,则效率会比较低。此时,需要每次迭代执行传入不同的参数进行测试,通过导入外部数据文件进行参数化,即可实现大量数据的自动化执行。

    外部数据保存 方式我们可以有 csv 文件、json 文件。

    4.1、json文件

    创建一个josn 文件,准备以下数据

    [
    {
    "username":"xiaoming",
    "password":"123456"
    },
    {
    "username":"liubei",
    "password":"a123"
    },
    {
    "username":"zhangsan",
    "password":"b123"
    }
    
    ]
    

    创建一个文件,在文件下创建一个请求,配置两个参数,
    引入两个变量,变量名字一定要和josn文件里面的key 一致


    image
    image
    image

    4.2、csv 数据

    准备csv数据,第一行为变量名,下面为每次迭代的值

    userName,passWord
    user001,u001
    user002,u002
    user003,u003
    

    引入的变量名 一定和csv 文件一致


    image
    image

  • 相关阅读:
    BloomFilter——读数学之美札记
    线性时间求最长回文子串
    python之装饰器详解
    多线程快速排序(思考)
    搬家
    webapp用户身份认证方案 JSON WEB TOKEN 实现
    Java多线程问题总结
    synchronized的4种用法
    线程池的工作原理及使用示例
    Http 请求 GET和POST的区别
  • 原文地址:https://www.cnblogs.com/niunai/p/15472594.html
Copyright © 2020-2023  润新知