Postman接口测试 ------ 设置全局变量、参数传递、断言

1452 篇文章 68 订阅
1438 篇文章 113 订阅

在能熟练使用postman运行接口请求后,会遇到一些问题。例如:

  • 我们的web网站一共有几十个接口,测试的时候如果要切换环境,这个时候要每个接口都要修改url的根路径,一个一个的改也太麻烦了;

  • 还有时候我们经常需要用到上一个接口的返回值,来作为下一个接口的数据来使用,要怎么把参数传递过去呢;

  • 作为接口测试的话,验证接口返回结果是否正确,需要断言来判定这个接口的运行结果是否符合期望,这个时候又该怎么做。

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

参考文档:https://learning.getpostman.com/docs/postman/scripts/test_examples/

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

  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

});


下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!å¨è¿éæå¥å¾çæè¿°

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!喜欢软件测试的小伙伴们,可以加入我们的测试技术交流扣扣群:779450660里面有各种软件测试资源和技术讨论)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值