这一章,一起学习Postman工具
上一章说过 Web 服务接口,现在用的最多的就是 REST API接口了。所以我们主要就是讲解对 REST API 服务接口的测试。
现在很多公司的系统虽然号称是REST API, 但是其实并不完全遵循这个规则。
这些系统的API其实就是 基于HTTP 的增查改删操作,分别使用了HTTP的POST、GET、UPDATE、DELETE方法的请求。
所以我们后面API 接口的测试,所需要的基础知识,就是HTTP协议,就够了。
安装和打开
Postman的Window应用程序安装包,可以到Postman官方网站下载。
https://www.getpostman.com/apps 打开该网站
点击选择相应操作系统上的安装包后,就可以下载了。 下载下来就是一个安装包,大家双击安装即可。
安装好后,会在桌面上生成相应的图标,双击即可打开。
图标如下
Postman提供了一个多窗口和多标签界面。 浏览界面很简单。
- 左边的sidebar侧边栏可让您 查找和管理 请求和集合。
侧边栏分为两个主要标签,
History 和 Collections。
我们在builder中,直接去填写的请求,自动保存在“History” 标签窗口中
Collection里面提供了功能,可以把我们的API请求分类,实现目录式管理
- 右边的Request Builder
Request Builder 窗口是我们以后要操作的核心区域。
就是我们用来填写 API 请求的具体内容,
包括http请求的 url怎么填,头怎么填,体怎么填。
点击发送后,查看响应信息是什么。都在这里。
所以,是我们以后要操作的核心区域。
Request Builder就是用来让我们发送基于HTTP的API请求,并查看服务端的响应内容的。
我们在url编辑框中输入 百度的网址, 如下所示
然后,点击Send按钮。
随后,我们可以看到界面如下:
大家注意,蓝色线的上方是HTTP请求消息的内容展示,包括header、body,。。。
下方是响应消息的内容展示,包括body、cookie、header、。。。
构建http请求
API的测试,构造http请求是重点
Request Builder可以帮助我们快速的构建HTTP请求。
主要包括
URL(包括参数), Method(请求方法),Headers(请求头),消息体。Postman可以让我们方便的构建这些内容。
选择请求方法
Postman里面可以非常方便的选择HTTP请求的方法。
我们可以根据接口定义,选择不同的HTTP请求的方法。如下图所示。
这里面给出了几乎所有的HTTP请求方法, 常用的就是 GET POST PUT DELETE
url 的构建
url请求的输入非常简单:在url栏中填入即可。
协议类型 http 可以省略不写
如果是https
需要写上 https://www.baidu.com
----------------------
很多时候,我们的url请求中是有参数的
某课程管理系统,列出全部课程管理时,浏览器会发出一个请求
http://localhost/api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20
这个请求就是一个 API的调用 ,它是用来列出课程信息的。
大家注意,这url中,
问号后面的部分action=list_course&pagenum=1&pagesize=20
术语叫做query string。
而这里面用&符号隔开就是一个个参数。
这里包括pagenum(它的值为1) 、pagesize(它的值为20)
可以有n多个参数
我们可以把这个http请求直接拷贝到Postman Builder Req的地址栏里面,点击send,得到如下的结果
说明我们可以用Postman直接发送该http请求给后端的web服务,web服务会给出响应消息,返回课程信息列表。
如果我们点击Params 按钮,就可以看到Postman把url请求的参数显示在下面的表格中,如下图所示。
大家以后也可以在表格中编辑,更加清晰一些。
编辑一个,发现,上面也会自动更新
----------------
而有些字符出现在参数字符串中会有问题, 比如&、空格、百分号等等。
比如: 打开浏览器 :百度搜索 你 好&啊,查看空格 & 是会转义的
& 因为它是分隔符, 如果变量值中出现这个,就会误解为 分隔符了。
另外,有些其他 特殊字符,比如 空格、百分号、{}等也是特殊含义的,通常在value里面也不能直接写。
地址栏里面不能直接写
但是我们不用担心,可以直接写在下面,因为Postman在发送的时候可以自动转换
请求头的构建
很多Web API 需要请求消息中,设置特定的HTTP头部。
要在HTTP头部中添加字段,可以点击Postman的Request Builder的请求编辑中 Headers标签,如下图,就可以像编辑表格字段一样添加HTTP的头部字段了。
可以一个个的添加,
编辑好以后,点击send ,发送出去的http请求中就会携带这些添加的头部。
请求体的构建
有的时候,我们发送HTTP请求需要携带消息体。
最常见的就是POST、put请求,有时delete也有消息体。
打开restapi-teach系统,添加课程,看看消息体的内容
-------------
postman构造http请求的时候,如果要填写消息体,就是点击下面的body
-----------------------------------------
restapi-teach系统,看添加课程的抓包消息
我们在开发者工具栏的网络包标签页里面可以发现,浏览器会发出一个POST请求。这个请求也是一个REST API,用来添加一门课程的。
要注意Http头里面的Content-Type字段。
这个字段非常重要,表明了消息体的内容的 类型。
这里是 Content-Type为application/x-www-form-urlencoded的这种类型。
这是一种非常常见的 请求体的 类型。
Content-Type为application/x-www-form-urlencoded的这种类型的消息体,
其实和前面的querystring的格式是一样的。
只是把参数存放的位置从url里面移到了body里面!!
根据这个消息体的格式,
我们可以在Postman中构建一个类似的HTTP POST请求,填入如下URL和Body信息,点击发送
注意:data部分,直接从浏览器里面拷贝就可以了
-----------------
通常,REST API请求, 消息体类型除了application/x-www-form-urlencoded外,
比较常见的还有 application/json 和application/xml,分别对应 json 格式的文本和xml格式的文本。
我们编程语言写的代码,运行的时候,内存中会有数据对象,
典型的比如前面学的Python里面的 整数、字符串、字典、列表。
如果我们要传递数据对象给另外的程序,比如一个字典里面的内容。
{
"name":"姚明",
"weight":"120kg",
"height":"225cm",
"team":"Huston Rocket"
}
这个member变量指向的 对象,如何通过网络传输?
我们必须要用字节串来表示 对象,这个术语叫做序列化
序列化成什么格式呢?
以前经常用xml,比如
<member>
<name>姚明</name>
<weight>120kg</weight>
<height>225cm</height>
<team>Huston Rocket</team>
</member>
当然也可以,
但是xml用程序进行序列化的效率不高, 而且人阅读不方便
后面就出现了json,
它易于人阅读和编写,同时也易于机器解析和生成,迅速成为目前最常用的互联网系统直接交互数据的格式规范。
包括我们python语言。
JSON 是 一种 编程语言 对象的字符串表示法,是一种数据保存和传输的 序列化格式。
它的这种数据表示方式和我们python语言里面数据对象的字面量表示方式非常像。
其实就是因为js语言里面数据对象字面量表示方式 和Python非常像。
最后,看看json数据的例子。 注意最后一个元素后面不能有逗号,否则有的系统会解析失败
json用在数据传输中最常见的传输对象就是
js数组(类似Python中的列表)和js对象(类似Python中的字典)
比如 js对象的一个例子
{
"name":"姚明",
"weight":"120kg",
"height":"225cm",
"team":"Huston Rocket"
}
大家看这个写法, 和Python中字典对象的字面量(也就是代码直接表示的写法) 是一样的。
----------------------------------
如果数据格式是json或者xml,这种情况下,用Request Builder来构造消息体,
需要选择类型为raw,并且在右边的text下拉框中选择相应的类型,并且在body编辑框中直接输入相应格式的文本。如下图所示
选择不同的类型, postman 会自动添加对应的header,
raw并不是一种http body的类型,而是postman 用来表示 可以由大家直接填写消息内容的方法
Collection 和Folder
Postman中,我们可以用Collection和Folder对API进行分类存放和管理。
这样,Postman里面我们可以用 Collection 和folder 来结构化,目录化的 保存 我们创建的API。
Collection我们可以理解为顶级目录,类似理解为C盘D盘,
folder就是下面的C盘D盘一个个目录
怎么创建Collection和Folder呢?
在左侧边栏中,点击Colleciton标签,随后点击创建图标,如下图所示
随后,输入Collection的名称即可。
创建好的Collection会出现在下方,如下所示
我们可以在创建好的Collection,一层层的建立Folder。
只需右键点击那个Collection,在弹出菜单中选择 Add Folder即可。
如果要在某个Folder中建立子Folder,只需右键点击那个Folder,在弹出菜单中选择 Add Folder即可。
通常一个产品的API接口测试,我们可以创建一个Collection和其对应。
根据各个API的功能 分成不同的Test Suite, 对应到不同的Folder中。
导出 导入
如果我们要和同事共享这些测试的API。
比如 我们根据 测试用例,用Postman 开发了这些API。 那么 Postman 和 这些API就是我们的测试工具。
测试用例,如果是另外一个同事要执行, 我们可以把这些API 导出到一个文件中,发给他 。
他就可以导入这些 API 就可以测试使用了。
创建 Postman账户
假如我们在公司创建了postman测试collection,
回到家换了家里电脑, 想查看, 就比较麻烦。
用U盘考,回家导入, 比较麻烦。 如果家里再修改了,考回公司,
可能就改了一点,也要全部导出,导入
反反复复不小心会考错。
Postman有比较高级的同步功能,只要有账户, 不管在那台机器登录,都可以使用该账户,获取其保存的API信息
大家可以创建一个Postman账户,演示如何 创建登录
用户名 jcyrss1 密码 sdfsdfsdf