临近下半年,公司任务也不是很多,趁这个机会老大让我研究了一下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.globals对象
pm.environment对象
pm.variables对象
pm.request对象
pm.response对象
PostMan中的Test
在postman中用于测试、断言的函数主要有
理解变量
全局变量,一但声明了全局变量,全局有效。在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上实现真正的自动化测试,这个还的我们老大来搞,能力有限就不多介绍了,有兴趣的小伙伴可以自行查看
今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我们的测试交流群大家一起讨论交流学习。