zoukankan      html  css  js  c++  java
  • Postman参数传递,断言和设置变量

    如果一共有几十个接口,测试的时候如果要切换环境,这个时候要每个接口都要修改url的根路径,一个一个的改也太麻烦了;
    还有时候我们经常需要用到上一个接口的返回值,来作为下一个接口的数据来使用,要怎么把参数传递过去呢;
    作为接口测试的话,验证接口返回结果是否正确,需要断言来判定这个接口的运行结果是否符合期望,这个时候又该怎么做。

    在postman中,这些问题都有解决方案,下面跟我一起来看一下吧。

    参考文档:(点击进入postman官方文档地址

    一、设置全局(环境)变量

    postman中可以设置全局和环境变量,以便可以存储一些例如:url、token值、测试参数等数据。
    变量的设置,是通过key-value的形式来存储。
    例如:url:http://test.baidu.com
    变量的使用:通过{{变量key}}来调用关键字获取值
    例如:{{url}},可以放在需要填写参数的任何位置。

    如何创建变量:
      点击postman界面右边的齿轮,在弹窗中可以选择创建全局变量、导入变量文件、创建环境变量。
    在这里插入图片描述
    添加变量:
      全局变量在创建后,任何时候都可以获取到,而环境变量只有在设置为当前环境时,才会获取到此环境中的变量。这个看个人需要来设置是全局变量还是环境变量,例如我把url、账号密码设为环境变量,因为有切换不同环境的需要。
      
    添加全局变量:
    在这里插入图片描述
    添加环境变量
    在这里插入图片描述
    变量的引用:
      如图所示,是一个环境变量的设置和引用,当鼠标悬浮在我们引用的变量{{key}}上时,会显示当前变量的值。
    在这里插入图片描述

    二、参数传递和断言

    在postman中有专门的代码区域,可以通过js代码语言来实现一些自定义操作。在Pre-request Script区域,是请求发送前的代码区,比如我们需要对密码进行md5加密后发送,就可以使用js中的方法先进行加密。在Tests区域中,可以通过获取返回参数的值进行断言,断言失败的接口会显示为false结果。

    如何进行参数传递:
      比如支付接口,需要上一个下单接口返回的订单号来作为入参。
      这个时候,首先要在下单接口的Tests区域中,获取到返回数据的订单号,然后存储为全局变量;
      接着在支付接口中,入参中的订单号值填写为我们设置的全局变量,这样就实现了一次参数传递。

    下面我们来看一下这些方法都该怎么写:

    2.1变量的设置
    这些方法是在postman中对全局(环境)变量的操作方法。

    获取变量
    获取全局变量:pm.globals.get(“variable_key”);
    获取当前环境变量:pm.environment.get(“variable_key”);
    获取普通变量:pm.variables.get(“variable_key”);

    设置变量
    设置全局变量:pm.globals.set(“variable_key”, “variable_value”);
    设置当前环境变量:pm.environment.set(“variable_key”, “variable_value”);

    清空变量值
    清空当前环境变量:pm.environment.unset(“variable_key”);
    清空全局变量:pm.globals.unset(“variable_key”);

    2.2返回数据的判断
    这里需要注意的是,网上有一些教程比较老了,例如这种形式的写法:
    tests[“Status code is 200”] = responseCode.code === 200;
    这样的写法官方文档中已经表示不推荐使用,而是推荐统一的js书写格式。

    判断返回状态码
    pm.test(“返回状态码为200”, function () {
      pm.response.to.have.status(200);
    });

    判断返回header中是否有“Content-Type”字段
    pm.test(“Content-Type字段存在”, function () {
      pm.response.to.have.header(“Content-Type”);
    });

    判断接口返回内容匹配一个字符串
    pm.test(“返回内容匹配字符串”, function () {
      pm.response.to.have.body(“response_body_string”);
    });

    判断返回参数中包含某个字符串
    pm.test(“字符串包含在返回值中”, function () {
      pm.expect(pm.response.text()).to.include(“想要搜索的字符串”);
    });

    判断接口响应时间
    pm.test(“接口响应时间小于200ms”, function () {
      pm.expect(pm.response.responseTime).to.be.below(200);
    });

    把responseBody转为json字符串
    var Jsondata =JSON.parse(responseBody);

    把xml格式返回转换为json格式
    var jsonObject = xml2Json(responseBody);

    获取并判断返回参数的值
    //假设返回参数为:{“code” : 0}
    pm.test(“断言code字段值是否为0”,function(){
      var jsonData = pm.response.json(); //创建一个变量,值为返回参数(json格式)
      pm.expect(jsonData.code).to.eql(0); //判断返回参数中code字段值为0
    });

    学而不思则罔,思而不学则殆
  • 相关阅读:
    利用ItextPdf、core-renderer-R8 来生成PDF
    把war包放到Tomcat安装文件夹下,不能直接訪问的解决方式
    我的RTOS 之六 -- Touch移植(s5pv210+threadx+ucgui+touch)
    数据库可用率监控工具
    9款极具创意的HTML5/CSS3进度条动画(免积分下载)
    ODBC与JDBC比較
    ORA-02287: 此处不同意序号
    mongodb创建、更新、删除
    jcenter那些事儿
    C#里的应用程序域AppDomain
  • 原文地址:https://www.cnblogs.com/linyu51/p/14745483.html
Copyright © 2011-2022 走看看