一文3000字从0到1实现基于PostMan的接口自动化测试(建议收藏)

临近年底,公司任务也不是很多,趁这个机会老大让我研究了一下PostMan的脚本自动化测试。作为一个前端开发,说实话,对于PostMan的操作,仅仅限于新建请求->填写url地址和参数->send发送,然后看看返回值而已。事实上,PostMan的功能还是非常强大的,我也搜了许多资料,整理出一篇比较详细的文档

理解pm对象

pm对象 - 是PostMan中非常核心的一个对象。包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接收到的响应,还允许获取和设置环境变量和全局变量

pm对象内部的核心功能(属性)
  • pm.info -- info对象包含与正在执行的脚本有关的信息(请求名称、请求id、请求次数....)
  • pm.variables/pm.environment/pm.global -- 变量管理
  • pm.request -- 当前脚本所在的请求
  • pm.response -- 当前脚本所在请求的响应结果
  • pm.cookies -- 包含与请求域相关联的cookie列表
  • pm.test -- test函数用于编写测试脚本
  • pm.expect -- 断言函数
pm上的方法(此部分不需死记,需要的时候查找就ok)
pm.info对象
方法描述结果类型
pm.info.eventName输出脚本实在哪个脚本栏中执行的String
pm.info.iteration当前运行迭代的次数Number
pm.infi.iterationCount计划运行的迭代总数Number
pm.info.requestName请求名String
pm.info.requestId请求IDString
pm.globals对象
方法描述
pm.globals.has('变量名')判断是否存在该全局变量
pm.globals.get('变量名')获取指定全局变量
pm.globals.set('变量名','变量值')设置全局变量
pm.globals.unset('变量名')清除指定的全局变量
pm.globals.clear()清除全部全局变量
pm.globals.toObject()将全局变量以一个对象的方式全部输出
pm.environment对象
方法描述
pm.environment.has('变量名')判断环境变量是否包含某个值
pm.environment.get('变量名')获取指定环境变量
pm.environment.set('变量名','变量值')设置环境变量
pm.environment.unset('变量名')清除指定环境变量
pm.environment.clear()清除全部环境变量
pm.environment.toObject()将环境变量以一个对象的方式全部输出
pm.variables对象
方法描述
pm.variables.get('变量名')获取变量中的指定值
pm.request对象
方法描述
pm.request获取当前发起请求的全部headers
pm.requset.url获取当前发起请的url
pm.request.headers以数组的方式返回当前请求中的header信息
pm.response对象
方法描述
pm.response.code当前请求返回的状态码200、404、500...
pm.response.reason()当前请求成功返回Ok
pm.response.headers以数组的形式返回当前请求成功后的请求头信息
pm.response.responseTime获取本次请求的时长,单位ms
pm.response.text()以文本的方式获取响应中的body内容
pm.response.json()将body中的内容解析为json对象
PostMan中的Test

在postman中用于测试、断言的函数主要有

方法描述
pm.test("testName",specFunction)测试方法,第二个方法中填写测试内容
pm.expect(assertion:*)断言
理解变量
  • 全局变量,一但声明了全局变量,全局有效。在postman中的任何集合、任何请求中都可以使用这个变量。作用域最大
  • 集合变量,集合变量是针对集合的,声明的变量必须是基于某个集合,使用范围也只是针对某个集合有效
  • 环境变量,声明环境变量,首先要创建环境,然后在环境中才能创建变量,如果想要使用这个环境变量,必须先选择这个环境.环境可以创建多个,每个环境下又可以有多个变量

上图展示了postman中变量的关系,由小到大依次为 data->local->-environment->clooection->global。local变了暂时我还没研究,data对象下面我会讲到

定义变量(环境变量&全局变量)

定义变量(集合变量)

使用变量

1.在请求参数中使用变量:{{变量名}},请求参数包括URL、Params、Authorization、Headers、Body

2.在Tests或者Pre-request Script中获取变量

  • 获取全局变量 - pm.globals.get("变量名")
  • 获取集合变量 - pm.collectionVariables.get("变量名")
  • 获取环境变量 - pm.environment.get("变量名")

外部文件实现数据参数化(导入csv文件)
实现步骤
 

1.创建数据文件,支持的格式为csv和json

2.请求中替换参数变量,{{}}或者data.xxx(我们导入的csv文件中的字段,可以直接通过data对象访问)

3.选择集合->点击Run->选择对应数据文件

复制代码

断言

//pm.expect是一个通用的断言函数,主要与pm.test联合使用,常见的用法如下

pm.test("testName",function(){

pm.expect('xxx').to.include('xxx');

})

// pm.expect()接收一个断言内容(实际结果,一般为response返回的结果)

// .to 是连接符,用于连接断言与判断,这些连接符不会对结果造成任何影响,只是让断言语句更复核英文语法。连接符包括to,be,been,is,that,which,and,has,have,with,at,of,same

//.include()断言方式,接收预期结果

复制代码
常用的断言方式

.equal(value)--断言是否严格相等
.not--取非,对之后的断言无条件取反
.include(value)/.contains(value)--表示实际结果是否包含预期结果
.ok/.true--断言目标为真

Newman

介绍

Newman是一款基于node.js开发的可以运行postman的工具,可以直接从命令行运行和测试postman集合

安装

npm install -g newman - 安装newman
npm intall -g newman-reporter-html - 安装生成html报告时需要的插件

语法

newman run xxx.json -d xxx.json/xxx.csv

  • run xxx.json - 标识要执行的postman脚本,就是我们导出的集合
  • -d xxx.json/xxx.csv - 标识要执行的数据data,就是我们自定义的参数文件

生成html格式的报告

newman run xxx.json -d xxx.json/xxx.csv -r html --reporter-html-export /Users/lz01/Desktop/tdtest.html
默认将html报告保存在当前目录下,如想保存到指定目录,在文件名前加路径即可

结尾

以上就是postman配合newman的使用,我们可以把每个接口需要的参数和期望的状态导入csv文件或者json,然后通过命令就能直接测试出每次的结果,节省了大量的测试时间。至于集成到Jenkins上实现真正的自动化测试,这个还的我们老大来搞,能力有限就不多介绍了,有兴趣的小伙伴可以自行查看

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末小卡片领取】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值