在程序员的工作中,尤其是在前后端开发分离的实践过程中,一定会有的工作就是接口联调,HTTP接口作为前端后端传输通信的关节,参数传递的有效性和格式验证非常的重要,Postman就是一款这样优秀的应用,在程序员工作的过程中,赋能工具箱至关重要。本文介绍的终点就是Postman,以及Postman的在实践自动化测试方面的抛砖引玉的工作,重点还是告诉读者要有意识的减免自己工作中的重复、枯燥、无味的工作,而让工作成为那种,看着屏幕,喝着咖啡,和同事畅聊着什么计划的时候,接口的测试就已经完成了的场景。
postman是一款支持http协议的接口调试与测试工具,其主要特点就是功能强大,使用简单且易用性好 。
无论是开发人员进行接口调试,还是测试人员做接口测试,postman都是我们的首选工具之一 。
在尝试学习postman的过程中,我们去学习一些分享的博文或者网页,肯定是获取postman最好的了解方式,但若想要深入掌握postman的思想理念,请一定要参考文档。
想要深入掌握Postman工具为我所用,实现自己需要的程序和逻辑,则如下三个部分必不可少。
Postman 如何编写官方文档 思想实践
BDD语法 基本骨骼
JS基本语法 血肉
BDD语法是Postman自动化测试的基本脉络,要熟练掌握才可
注意:请使用高版本比如8的postman,这样在撰写自动测试逻辑时有丰富的自动补全功能。
学习一项工具,并在工作中实践一项工具,有那种古人所说的善假于物也的思想。然后在团队中分享和实践这个工具,对于建设学习实践性团队非常重要,对于团队文化建设也有较强的重要性。
要记住这些Postman的界面元素与HTTP氢气球response的基本对应关系。在之后我们编写的自动化测试脚本中,主要针对的是pm.response对象
而pm.response对象主要包含如下的内容:
在Postman运行界面中,自动化测试的工作区为Tests标签下,我们可以在其中执行对于postman的测试。
如果没有断言,我们只能做接口的功能测试,但有了断言后,就为我们做自动化提供了条件,并且在postman中的断言是非常方便和强大的 。
我们先来了解下postman断言的一些特点 ,具体如下
断言编写位置:Tests标签断言
所用语言:JavaScript
断言执行顺序:在响应体数据返回后执行 。
断言执行结果查看:Test Results
在我们撰写自动化测试时,肯定少不了对于测试未通过的用例去检查,未测试的原因,因此,这个时候,我们可以通过Postman提供的控制台工具来查看程序运行时的日志。
在做接口测试时,经常会因为代码写的有问题导致报错,这时通过查看日志就显得非常重要了,postman也提供了这样的功能,它允许我们在脚本中编写打印语句,查看打印的结果 ;
同时也可以查看每个请求的日志信息 。在postman中编写日志打印语句使用的是JavaScript,编写的位置可以是Pre-request Script 或Tests标签中。编写打印语句如:console.log(“我是一条日志”)
可以使用快捷键Alt + ctrl + C
这里面有几个比较实用的功能:
**搜索日志:**输入URL或者打印的日志就能直接搜索出我们想要的请求和日志,这对我们在众多日志中查找某一条日志是非常方便的 。
按级别搜索:可以查询log,info,warning,error级别的日志 ,有助于我们更快定位到错误 。
查看原始报文(Show raw log):如果习惯看原始请求报文的话,这个功能可能更方便些 。
隐藏请求(Hide network):把请求都隐藏掉,只查看输出日志 。
总之,通过这个功能,我们在请求接口报错时,通过打印响应的日志,就能很轻松的找到问题原因了 。
在做接口测试时,请求接口返回的数据都是很复杂的json数据,有着多层嵌套,这样的数据层级在postman怎么获取呢 ?
案例1:多层json嵌套, 获取user_id的值
{
"name": "Android",
"author": "panzhen",
"version": "2.8.5",
"age": 12
}
获取其中内容
//获取json体数据
var jsonData = pm.response.json()
// 获取user_id的值,通过.获取**var**
user_id = jsonData.data.user_id
pm.test("Status code is 200", function () {
pm.response.to.have.status(200); //这里填写的200是预期结果,实际结果是请求返回结果
});
pm.test("Status code name has string", function () {
pm.response.to.have.status("OK"); //断言响应状态消息包含OK
});
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json() 获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错
pm.expect(jsonData.value).to.eql(100) 获取jsonData中键名为value的值,然后和100进行比较
可以在一个测试中使用多个断言
本篇文章的撰写是基于自己在出差时的工作和学习,博客阅读以及官网文档阅读撰写而得到的,一方面是为了帮助团队更好的使用这个工具,另外也是为了更快的确保笔者编写程序的快速检验,由于在笔者撰写时,本文的主要目的还是希望更多的去使用这个工具,去阅读官网文档,BDD语法,熟悉简要的JS语法,去改善自己对于工具意识的理解,因为笔者深深的意识到,效率是对一个coder的最强启示。
发现了一个小工具,就是在撰写博文的时候,借助AutoHotKey可以非常方便的键入缩进,很优美。
2021年4月24日周六10:43:53于AUX