• 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

  • 相关阅读:
    三个心态做人做学问 沧海
    成功走职场要找准自己的"快捷键" 沧海
    免费离线下载 拂晓风起
    Hibernate 获取某个表全部记录时 奇怪现象 (重复出现某个记录) 拂晓风起
    无法读取mdb 如果连接不了ACCESS mdb文件,就尝试安装MDAC 拂晓风起
    Netbeans 使用 Hibernate 逆向工程 生成hbm和pojo 拂晓风起
    如何点击单选框 radio 后面的文字,选中单选框 拂晓风起
    Java 连接access 使用access文件 不用配置 拂晓风起
    mysql下如何执行sql脚本 拂晓风起
    Hibernate配置access Hibernate 连接 access 拂晓风起
  • 原文地址:https://www.cnblogs.com/niunai/p/15472594.html
Copyright © 2020-2023  润新知