postman进阶

接口关联

        当请求之间有依赖关系, 比如一个请求的入参是另一个请求返回的数据, 这时候需要用到关联处理.

接口关联的思路

        要获取某个请求的响应结果, 可以通过在Tests标签页中编写JavaScript脚本来实现

        // 获取json格式的响应数据
        var jsonData = pm.response.json();
        多个请求之间可以使用全局变量或环境变量来传递数据

                 把数据保存到全局变量中

                pm.globals.set("token", token)

        获取某个全局变量的值:

        // 非代码形式获取: 
        {{variable}}
        // 代码形式获取:
        pm.globals.get("variablename")


接口关联案例

        (1).请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html
        (2).获取返回结果中的城市名称
        (3).调用百度搜索接口: http://www.baidu.com/s?wd=北京 ,把获取到的城市名称作为请求参数

        // 实现思路
        (1).postman访问天气接口, 在Tests中编写脚本:
            - 先获取接口的响应数据, 转化为json数据格式
            - 从json数据中取出city的值
            - 将city的值设置为全局变量
        (2).访问百度查询接口, 将关键词设置为上一个请求添加的环境变量的值

        // 脚本
        var jsonData = pm.response.json();
        var city = jsonData.weatherinfo.city;
        console.log("city为:  + city);      
        pm.globals.set("city", city);

        // 百度查询URL
        http://www.baidu.com/s?wd={{city}}

批量执行测试用例


        要想批量执行测试用例,需要先把接口请求添加到测试集中,通过运行测试集的方式就可以实现批量运行测试用例。

        // 实现:
            (1).创建测试集
            (2).在测试几种添加接口请求
            (3).运行测试集(实现测试集中多接口用例批量执行)

参数化应用场景

        // 应用场景:
            针对于某个接口,如果有大量的测试数据需要批量验证,可以把测试数据保存到数据文件中,通过参数化的方式来实现。


案例实现

        // 需求: 批量查询手机号归属地和所属运营商信息,并校验运营商数据是否正确
        // 接口: http://cx.shouji.360.cn/phonearea.php?number=13012345678
        # 实现步骤分析:
            - 定义数据文件: CSV文件  or   JSON文件
            - 定义接口请求, 注意此时接口中的number的值不可写死, 应使用变量
            - 在Tests中定义断言脚本
            - 发送请求时选择数据文件
            - 执行请求


环境搭建

        Newman是一款基于nodejs开发的可以运行Postman脚本的工具,并可以生成测试报告. 其环境搭建如下:

        # 1.nodejs环境准备
        (1).下载nodejs: http://nodejs.cn/download/
        (2).安装nodejs, 并配置环境变量
        # 2.安装Newman
        (1).命令行安装newman及检验:
            - 安装: npm install -g newman
            - 检验: newman -v
            注意: 如果报错执行: npm config set strict-ssl false
        (2).命令行安装new-reporter-html: npm install -g newman-reporter-html


报告生成实现

        # 生成报告实现步骤
                (1).导出测试集
                (2).执行测试, 打开命令行窗口:
            newman run 测试脚本文件 -e 环境变量文件  -d 测试数据文件 -r html --reporter-html-export 测试报告存储路径
        # 参数说明:
            run xxx.json:表示要执行的postman脚本,即导出的测试集数据
            -e source:用来指定环境变量文件的路径
            -d source:用来指定测试数据文件的路径
            -r html:用来指定生成的数据结果的类型,如json、html等
            --reporter-html-export source:指定html报告生成的路径;如果不设置该参数,则会在当前目录下生成一个名字为newman的文件夹


实现案例

        # 需求:
        1.创建测试集h2007b
        2.在测试集中创建两个请求
            (1).一个请求天气接口
            (2).另一个请求使用百度搜索接口搜索上一个天气查询接口的城市名称
        # 实现思路
        1.创建测试集:h2007b
        2.创建天气查询接口
            - 请求方式: GET
            - 请求地址: http://www.weather.com.cn/data/sk/101010100.html
            - 请求后置脚本, 从将响应数据转换为JSON数据, 再取出城市信息设置为全局变量: "city" --> city:
                var jsonData = pm.response.json();
                var city = jsonData.weatherinfo.city;
                pm.globals.set("city", city);
        3.创建百度查询接口:
            - 请求方式: GET
            - 请求地址: http://www.baidu.com/s?wd=城市名称, 城市名称使用全局变量的city
        4.导出测试集
        5.运行命令生成报告
        newman run h2007b.postman_collection.json -r html --reporter-html-export reporter.html

上一篇:json数据处理实用工具Jq


下一篇:示例讲解PostgreSQL表分区的三种方式