整理了一些软件测试方面的资料、面试资料(接口自动化、web自动化、app自动化、性能安全、测试开发等),有需要的小伙伴可以文末加入我的学习交流qun,无套路自行领取~
临近年底,公司任务也不是很多,趁这个机会老大让我研究了一下PostMan的脚本自动化测试。作为一个前端开发,说实话,对于PostMan的操作,仅仅限于新建请求->填写url地址和参数->send发送,然后看看返回值而已。事实上,PostMan的功能还是非常强大的,我也搜了许多资料,整理出一篇比较详细的文档
pm对象 - 是PostMan中非常核心的一个对象。包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接收到的响应,还允许获取和设置环境变量和全局变量
方法 | 描述 | 结果类型 |
---|---|---|
pm.info.eventName | 输出脚本实在哪个脚本栏中执行的 | String |
pm.info.iteration | 当前运行迭代的次数 | Number |
pm.infi.iterationCount | 计划运行的迭代总数 | Number |
pm.info.requestName | 请求名 | String |
pm.info.requestId | 请求ID | String |
方法 | 描述 |
---|---|
pm.globals.has('变量名') | 判断是否存在该全局变量 |
pm.globals.get('变量名') | 获取指定全局变量 |
pm.globals.set('变量名','变量值') | 设置全局变量 |
pm.globals.unset('变量名') | 清除指定的全局变量 |
pm.globals.clear() | 清除全部全局变量 |
pm.globals.toObject() | 将全局变量以一个对象的方式全部输出 |
方法 | 描述 |
---|---|
pm.environment.has('变量名') | 判断环境变量是否包含某个值 |
pm.environment.get('变量名') | 获取指定环境变量 |
pm.environment.set('变量名','变量值') | 设置环境变量 |
pm.environment.unset('变量名') | 清除指定环境变量 |
pm.environment.clear() | 清除全部环境变量 |
pm.environment.toObject() | 将环境变量以一个对象的方式全部输出 |
方法 | 描述 |
---|---|
pm.variables.get('变量名') | 获取变量中的指定值 |
方法 | 描述 |
---|---|
pm.request | 获取当前发起请求的全部headers |
pm.requset.url | 获取当前发起请的url |
pm.request.headers | 以数组的方式返回当前请求中的header信息 |
方法 | 描述 |
---|---|
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中用于测试、断言的函数主要有
方法 | 描述 |
---|---|
pm.test("testName",specFunction) | 测试方法,第二个方法中填写测试内容 |
pm.expect(assertion:*) | 断言 |
上图展示了postman中变量的关系,由小到大依次为 data->local->-environment->clooection->global。local变了暂时我还没研究,data对象下面我会讲到
1.在请求参数中使用变量:{{变量名}},请求参数包括URL、Params、Authorization、Headers、Body
2.在Tests或者Pre-request Script中获取变量
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是一款基于node.js开发的可以运行postman的工具,可以直接从命令行运行和测试postman集合
安装
npm install -g newman
- 安装newmannpm intall -g newman-reporter-html
- 安装生成html报告时需要的插件
newman run xxx.json -d xxx.json/xxx.csv
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上实现真正的自动化测试,这个还的我们老大来搞,能力有限就不多介绍了,有兴趣的小伙伴可以自行查看
如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我们的测试交流群大家一起讨论交流学习。