Python接口自动化测试框架(工具篇)–接口测试神器postma

「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战」。

前言

前面两章工具篇基本上是对接口测试的基础知识扫盲,无论是网络协议还是做接口测试,都有必要明白的一些概念,这样才能更好的理解如何通过工具模拟发起网络请求或编码实现等等手段以达到接口测试的目的。

postman

Postman是一个接口测试工具,在做接口测试的时候,Postman相当于一个客户端,它可以模拟用户发起的各类HTTP请求,将请求数据发送至服务端,获取对应的响应结果, 从而验证响应中的结果数据是否和预期值相匹配;并确保开发人员能够及时处理接口中的bug,进而保证产品上线之后的稳定性和安全性。 它主要是用来模拟各种HTTP请求的(如:get/post/delete/put..等等),Postman与浏览器的区别在于有的浏览器不能输出Json格式,而Postman更直观接口返回的结果。

--摘自百度百科

软件安装

在起初的时候,它只是一款google插件,而后发展成桌面版,又分出免费版和收费版,装一个免费版就可以了。

  • postman下载地址
  • 根据系统选择对应系统的安装包,也可以选择历史版本,
  • 作者下载的最新版本已经是9.1.5了;直接双击运行即可,
  • 进入自己的workspace工作空间,UI已经长成这样了,连作者都感觉陌生了:

在这里插入图片描述

  • 既然陌生了,就不要着急去使用,先尝试性的给它的功能全部点一次,看看会有什么效果,然后对圈住的这部分进行案例演示:

在这里插入图片描述

http协议接口请求示例

做接口测试之前,要么先看到接口文档,再不济也要抓包获取接口信息;接口测试的关键要素:请求地址、请求方法、请求参数、响应参数等等;

  • 下拉框中包括了基本常用的请求方法:post、get
  • 地址栏填写完整的地址,如:www.baidu.com
  • body中是填写请求参数,json对象或key-value键值对形式
  • 如果有特殊要求,需要注意headers、Authorization部分
  • 然后再是tests断言部分或后置处理环境变量
  • 至于pre-request script部分呢,则按需处理

postman自带的接口请求示例

tests断言

引用postman自带的接口请求示例,可以清晰的看到部分功能的妙用,但是在tests这一块是空白的,即没有对响应结果进行断言或后续处理

在这里插入图片描述

  • 咱就从右边预先设置好的、去选择一些代码再重新请求;只不过看到的代码,会比写这篇文章之前的语法有点不一样,有点像js的写法:

在这里插入图片描述

  • 原来的语法长这样:
// 判断是否存在 'user_id' 值
tests["Body contains user_id"] = responseBody.has("user_id");
if(tests["Body contains user_id"]){
    // 将返回信息解析成对象
    var responseData = JSON.parse(responseBody);
    tests["value_user_id"]=responseData.token.user_id
    // 设置全局变量
    postman.setGlobalVariable("user_id",tests["value_user_id"]);
}else{
    // globals["test_user_id"] 是我在 `Pre-request Script` 中预定义好的一个常量值
    postman.setGlobalVariable("user_id",globals["test_user_id"]);
}
复制代码
  • 执行结果如下,可查看断言结果:

在这里插入图片描述

  • 与pre-request script对应的就是post-request script然而并没有,倒是不代表没有等效的功能,其实就是tests
# 设置环境变量
pm.environment.set("variable_key", "variable_value");
复制代码
  • 如果是get的脚本就在pre-request script中使用,在tests主要是断言以及后续的结果处理,如:提取参数设置环境变量等操作

collections

这是一个集合,从postman自带的示例可以看出,这里做成了一个集合,可以是最小单位的一个接口,也可以是由多个接口组成的业务场景,接口之前可存在相互依赖关系,只需解决参数关联问题

  • 在collections执行接口测试是顺序执行的,也可以在tests通过代码去条件判断进行指定执行顺序

选择run collections

  • 下面是run collections的结果截图

点击run

  • 在更多选项里,还有一个monitor collections,监控执行结果,类似做接口性能测试或自动化测试一样

settings

  • 主要还是对http协议的一些设置,是否支持ssl、重定向设置等,基本保持默认即可

在这里插入图片描述

更多用法

postman至今为止除了测试会选择newman+postman做接口自动化测试方案之外,开发使用最多的一款接口测试工具

  • 下图介绍console控制台日志输出和如何转成代码请求接口测试案例

更多用法

  • 左侧栏还有如Environments\mock server\monitor\flows\history等功能,在这里咱们就不再多做介绍,有兴趣的可以去研究研究

总结

postman这篇接口测试神器,不是本专栏的重点介绍对象,我相信聪明的读者会知道如何使用postman去做接口测试,毕竟它的功能也没深奥到哪里去,但是,却能帮助咱们去更好的理解如何做好接口测试,无论是接口测试用例设计,又或者是基于业务场景的接口测试,它都能满足日常的接口测试需求。