美文网首页PostmanIT@程序员猿媛
04-接口测试-postman接口测试

04-接口测试-postman接口测试

作者: minisummer | 来源:发表于2020-06-26 11:32 被阅读0次

    哈喽,大家好!我是minisummer!首先感谢您的关注!
    今天给大家分享的内容是接口测试必备的postman测试工具的使用:postman发送get与post请求,变量的设置与引用,文件的导入与导出,断言机制,参数化(数据驱动),批量执行测试集,环境变量与全局变量的设置,定时器的使用,关联(请求依赖),测试结果的导出。

    Postman简介

    下载地址:https://www.getpostman.com/apps
    Postman是谷歌开发的一款网页调试和接口测试工具,能够发送任何类型的http请求,支持GET/PUT/POST/DELETE等方法。Postman非常简单易用,可以直接填写URL,header,body等就可以发送一个请求,用来测试api接口非常方便。

    Postman的优点

    • 使用简单,无需搭建环境,直接使用,可以快速构建请求。
    • 保存以供以后回放使用。
    • Postman有响应结果的断言功能,可以用来写测试用例。
    • 可以把测试用例放在同一个目录下批量运行管理,可以设置迭代次数。
    • 可以设置环境变量,方便测试环境和生产环境使用同一套测试用例。
    • 调试结果方便查看。

    Postman接口测试工具的使用

    1.创建文件夹

    创建文件夹来保存我们接口请求的数据。

    postman创建文件夹
    菜单栏介绍

    同步请求-同步请求数据到本地
    抓包图标-使用Postman抓取API请求和cookie
    设置图标-应用程序设置
    通知图标-接收通知或广播
    分享图标
    账户管理

    2.完成get请求和post请求

    Get请求:参数在params里设置。

    get请求

    Post请求:参数在body里设置。

    方式一:表单提交,在body中选择x-www-form-urlencoded
    等价于application/x-www-from-urlencoded,会将表单内的数据转换为键值对。

    方式二:row传参
    可以上传任意格式的文本,可以上传text、json、xml、html等,一般消息主体是序列化的JSON字符串。

    方式三:Form-data 传参
    就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。

    post请求

    设置参数

    设置参数可以使用bulk edit模式和Key-value edit模式。

    设置参数

    3.导出和导入接口文件

    文件导入与导出

    4.断言(检查点)

    Postman添加响应处理,通过检查响应数据是否符合预期来判断用例是否通过。
    Postman提供了很多常用断言方式:比如对响应状态码、响应内容等进行断言。


    断言(检查点)

    常见断言代码
    参考文章:https://blog.csdn.net/qq_37775060/article/details/79498591

    //判断返回状态码为200
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    //判断返回元素中含有ok
    pm.test("Body matches string", function () {
        pm.expect(pm.response.text()).to.include("OK");
    });
    //判断返回json数据中某个键对应的值,Your test name表示这个测试片段的名称,可以自己任意定义;jsonData.value表示响应json串中的某个键,
    pm.test("Your test name", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.value).to.eql(100);
    });
    //判断响应内容是否和预期内容完全一致
    pm.test("Body is correct", function () {
        pm.response.to.have.body("response_body_string");
    });
    //检查content-Type是否包含在header返回
    pm.test("Content-Type is present", 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);
    });
    //成功的POST请求状态码
    pm.test("Successful POST request", function () {
        pm.expect(pm.response.code).to.be.oneOf([201,202]);
    });
    //状态码:代码中有指定字符串Created
    pm.test("Status code name has string", function () {
        pm.response.to.have.status("Created");
    });
    //response body:将XML转换为JSON对象
    var jsonObject = xml2Json(responseBody);
    

    5.将接口文件转化为不同的代码

    接口文件转为不同代码

    6.参数化(数据驱动)

    在环境中设置参数,为参数设置不同的值。

    参数格式:{{参数名称}}


    参数化
    参数的引用

    文档参数化:Postman支持Json文档,txt文档,CSV文档

    txt文档
    引用变量

    7.迭代

    Runner中设置迭代,对接口进行批量测试,可以对文件夹中的所有接口进行批量测试。

    集合:即是postman中的Collections,类似文件夹,可以把同一个项目的请求放在一个集合里方便管理和分享。测试人员下次测试可以直接从集合中找到要执行的测试case。可以让单个的request分组到一起,对每个request都有很多个testcase,都分组收藏到集合里面,进行自动化测试和回归测试。如果想将自己的集合分享给团队内其他人,可以点击Share按钮进行分享。

    1.创建测试集:在左侧面板下点击New collections按钮。
    2.创建多条测试用例,点击左侧save按钮,保存到创建的测试集中。
    3.点击测试用例集边上右边的run按钮,或者顶部菜单栏的Runner进行运行。
    4.选择环境信息、迭代次数、请求的等待时间。
    5.运行结果。

    批量运行测试集

    8.环境变量和全局变量

    接口测试时,为了方便修改和管理环境和参数,我们会把域名信息和请求的固定参数设为环境变量,把接口参数的请求或者返回参数中的固定值设为全局变量。

    全局变量

    代码设置全局变量:在tests模块设置。

    pm.globals.set("variable_key", "variable_value");
    

    可视化设置全局变量:小眼睛—global—edit

    设置全局变量

    进入对应界面后,便可直接进行管理

    管理变量

    多环境区分与切换

    通常情况下,我们的接口都会分为测试版本和线上版本(或者更多),而他们的区别可能仅是 ULR 不同,那么全局变量便不大合适解决这个问题。

    代码设置环境变量:

    //注意,该参数只添加到你当前选择的环境的“参数集”中

    postman.setEnvironmentVariable("variable_key", "variable_value");
    
    设置环境变量 环境变量

    使用环境及变量:{{name}}

    切换环境

    9.定时任务(监控器)

    参考文章:https://blog.csdn.net/cai_iac/article/details/81030619?utm_source=blogxgwz9
    Postman 提供了一个 Monitors (监视器)功能,支持我们提交一个测试任务,按照设置的定时器进行运行,如每小时测试一次,具体操作如下:

    postman定时任务

    10.请求依赖(关联)

    接口与接口之间可能会有数据依赖的问题。比如购物下单接口需要依赖登录接口返回的一个标识token,那么我们请求下订单接口时只要一起携带 token 参数进行请求即可。所以问题变为:保证接口调用顺序。
    即将接口A返回的数据传递给后续的接口B、C、D。

    10.1接口默认执行顺序

    接口的执行顺序其实就是按照这边目录中的顺序(从上到下),即: Request1 -> Request2 -> Request3。


    接口执行顺序

    10.2自定义执行顺序

    默认执行顺序通常没法满足我们复杂的业务需求,postman.setNextRequest("填写你要跳转的接口名") ,支持我们跳转到指定接口继续执行,举个例子:跳过运行request2

    自定义执行顺序-

    自定义执行顺序需要注意几点

    1. postman.setNextRequest() 只在运行集合测试的时候生效,也就是说我们单独运行 (Send) 接口Request1 时,函数是不起作用的。
    2. 当我们运行集合测试成功从 Request1 -> Request3 后,如果 Request3 后面还有接口,那么后面的接口仍然继续按默认顺序执行,即图中的接口 Request4 仍会被执行。
    3. 指定的跳转接口必须属于同一个集合中。
    4. setNextRequest() 函数不管在 Tests 脚本中何处被调用,它都只在当前脚本最后才被真正执行。比如我们将图中的第二行与第一行互调后,那么在运行跳转函数后第二行代码仍会被执行。
      所以,利用 setNextRequest() 函数,我们便可以按照条件跳过不必要的接口,或者建立我们自己的一个逻辑测试。

    10.3 解决依赖问题

    掌握以上的预备知识后,我们开始看看如何用 Postman 解决存在依赖关系的接口测试。

    假设场景

    我们的接口 Request1 为登录接口,登录成功将会返回一个 access_token 字段作为标识(已实现)。那么假设接口 Request3 为一个下订单的接口,需要携带登录返回的 access_token 才能正常访问。

    思路

    1. 保证 Request1 在 Request3 之前被运行

    2. 将 Request1 返回的 access_token 的值添加到环境变量"参数集"中。

    3. Request3 在请求时引用 access_token 的值

    将返回值存在 “全局变量” 或者 “环境变量” 中,视具体业务情况而定,该例中 access_token 的值是与环境有关的,所以这里选择使用环境变量集存储。

    Postman 中的操作

    1. 我们目录中已保证 Request1 接口优先执行

    2. Request1 中 Tests 的代码情况:

    if(responseCode.code === 200 && responseBody.has("access_token")){
        //如果 code 为 200, 并且返回的数据中存在 access_token 关键字,则认为登录成功
        tests["login"] = true;
        //将返回的内容转为 json 格式,并且取到 access_token 内容,添加到环境变量中
        var jsonData = JSON.parse(responseBody);
        //access_token的取值方式视具体的 json 数据结构而定
        postman.setEnvironmentVariable("token",jsonData.result.access_token);  
        //跳转到 Request3 接口
        postman.setNextRequest("Request3")
    }else{
        tests["login"] = false;
        //登录失败,可以选择跳转到对应失败后的处理接口进行测试
        //postman.setNextRequest("Other Request")
    }
    }
    

    运行并查看结果

    运行集合测试,可以看到我们结果符合我们的预期,Request1 和 Request3 通过测试,Request2 被跳过,Request4 仍被执行。

    11.导出测试结果

    导出测试结果

    请大家多多指教~
    以上内容希望对你有帮助,有被帮助到的朋友欢迎点赞,评论。
    注:转载请注明出处,商用请征得作者本人同意,谢谢!!!

    相关文章

      网友评论

        本文标题:04-接口测试-postman接口测试

        本文链接:https://www.haomeiwen.com/subject/rnesfktx.html