我这已一个教管系统为例,有如下功能:
- 课程管理
- 老师管理
- 培训班管理
- 培训班期管理
- 课时管理
- 学生管理
现在提供的课程管理API接口文档如下
7.1课程管理API接口文档
增加课程接口
用来创建一个新的培训课程
请求语法
POST /api/mgr/sq_mgr/ HTTP/1.1
Content-Type: application/x-www-form-urlencoded
url请求参数
无url请求参数
请求体内容
参数名称 | 必填 | 说明 |
---|---|---|
action | 是 | 填写add_course,表明是为了创建课程 |
data | 是 | 存储创建课程的信息,包括名称、描述、显示次序。为json格式。例如:{ "name":"初中化学", "desc":"初中化学课程","display_idx":"4"} |
响应语法
HTTP/1.1 200 OK
Content-Type: application/json
头部信息
头部信息 | 必填 | 说明 |
---|---|---|
Content-Type | 是 | 正常情况下该值将被设为application/json,标识返回JSON格式的文本信息 |
响应内容
如果请求成功,返回json格式的消息体,如下所示,retcode值为0表示添加成功,id是新加课程对应的ID号
{
"retcode": 0
}
说明
增加课程的名称如果已经存在,则会创建失败返回结果为
{
"retcode": 2,
"reason": "同名课程已经存在"
}
列出课程接口
用来列出系统里所有的培训课程
请求语法
GET /api/mgr/sq_mgr/?action=list_course&pagenum=1&pagesize=20 HTTP/1.1
Host: restapi-teach.com
Content-Type: application/x-www-form-urlencoded
url请求参数
参数名称 | 必填 | 说明 |
---|---|---|
action | 是 | 填写add_course,表明是为了创建课程 |
pagenum | 是 | 表示当前要显示的是第几页,目前固定填写1 |
pagesize | 是 | 表示一页最多显示多少条课程信息,目前固定填写20 |
请求体内容
该请求无需指定请求内容
响应语法
HTTP/1.1 200 OK
Content-Type: application/json
头部信息
头部信息 | 必填 | 说明 |
---|---|---|
Content-Type | 是 | 正常情况下该值将被设为application/json,表示返回 JSON 格式的文本信息。 |
响应内容
如果请求成功,返回json格式的消息体,如下所示
{
"retlist": [
{
"desc": "初中语文",
"id": 418,
"display_idx": 1,
"name": "初中语文"
},
{
"desc": "初中数学",
"id": 419,
"display_idx": 2,
"name": "初中数学"
},
{
"desc": "初中英语",
"id": 420,
"display_idx": 3,
"name": "初中英语"
}
],
"total": 3,
"retcode": 0
}
retcode值为0表示查询成功。
total 值表示总共有多少门课程信息
retlist的内容是一个数组,其中每个元素对应一门课程信息。
修改课程接口
用来修改一门培训课程的信息
请求语法
PUT /api/mgr/sq_mgr/ HTTP/1.1
Content-Type: application/x-www-form-urlencoded
URL请求参数
无url请求参数
请求体内容
参数名称 | 必填 | 说明 |
---|---|---|
action | 是 | 填写modify_course,表明是为了修改课程信息 |
id | 是 | 填写要修改的课程的id号数字 |
newdata | 是 | 存储创建修改后课程的信息,包括名称、描述、显示次序,为json格式。例如:{"name":"初中化学","desc":"初中化学课程", "display_idx":"4} |
响应语法
HTTP/1.1 200 OK
Content-Type: application/json
头部信息
头部名称 | 必填 | 说明 |
---|---|---|
Content-Type | 是 | 正常情况下该值将被设为application/json,表示返回 JSON 格式的文本信息。 |
响应内容
如果请求成功,返回json格式的消息体,如下所示,retcode值为0表示修改成功
{
"retcode": 0
}
删除课程接口
用来删除一门培训课程
请求语法
DELETE /api/mgr/sq_mgr/ HTTP/1.1
Content-Type: application/x-www-form-urlencodedX
url请求参数
无url请求参数
请求体内容
参数名称 | 必填 | 说明 |
---|---|---|
action | 是 | 填写delete_course,表明是为了删除课程信息 |
id | 是 | 填写要删除的课程的id号 |
响应语法
HTTP/1.1 200 OK
Content-Type: application/json
头部信息
头部名称 | 必填 | 说明 |
---|---|---|
Content-Type | 是 | 正常情况下该值将被设为application/json,表示返回 JSON 格式的文本信息。 |
响应内容
如果删除成功,返回json格式的消息体,如下所示,retcode值为0表示删除成功
{
"retcode": 0
}
7.1 Postman Collection
我们在Postman中创建一个Collection,名为教学管理系统,对应整个API测试。其中,对于上述课程管理接口,我们可以创建几个folder,名称分别为课程管理、老师管理、培训班管理、培训班期管理、课时管理、学生管理、如下所示
接下来我们就要在课程管理上加上对应上面文档的4个API测试。首先我们来创建新建课程的API,在右边的Builder里面打开一个标签页。方法选择POST,request url中填写
点Save,保存到课程管理folder中。保存的时候,我们给这个请求起个容易记的名字。
同样的,一次创建列出课程API,如下
修改课程api,如下
删除课程API,如下
最终,这个课程管理的folder里面的内容如下
7.3进行手工测试
好了,我们填写好上面的课程管理的API后,就可以着手进行手工测试了。当然要进行手工测试。必须要先有测试用例,测试用例根据API文档来创建。可以采用条件组合、边界值,等各种方法。我们简单讲下如何编写测试用例(可根据个人风格编写),其实做接口测试,编写测试用例也是很重要的一部分,很多同学接口测试用例不知道如何下手,其实就跟我们以前写测试用例是一样的,我们这里已添加课程为例简单说一下:
有的同学喜欢写的很详细,我们这里的接口算是简单的接口数据不多,有的接口数据是一大长串,描述的文档有时候一页都不够放,都写在测试用例里面是不是不太合适 。个人经验测试用例最好的能描述出这个东西是干什么的就行了,需要要写的特别具体,只要能让人一眼看出来知道你这个用例需要做什么事情,至于他怎么样使用什么工具不需要写进去包括具体的创建API请求的内容。写的很详细会有问题,这样的用例不但写的麻烦而且随着系统的更改,里面具体的消息格式说不定在变啊,他搞一次你用例跟着变一次会很累的。还存在一个问题如果写的很具体,一眼看去不知道你这个用例想干什么,你的用例很庞大抓不到重点。
增加课程接口,我们设计了如下的测试用例
我们在执行测试用例的时候,只需要是用Postman(或者其他几口测试工具)
- 先调用列出课程的API接口,查看当前的有哪些课程;
- 在调用增加课程API接口,查看一下当前有哪些课程
- 在调用列出课程的API接口,查看下现在有哪些课程,是否包含了刚刚添加的课程的信息。
如果我们设计了这样的测试用例
我们在执行测试用例的时候,只需要是用Postman
- 先调用列出课程的API接口,查看一下当前有哪些课程
- 在调用增加课程API接口,来创建一门课程,课程名是系统中已经存在的,检查返回结果
- 再调用列出课程的API接口,查看一下现在有哪些课程,是否包含了刚刚添加的课程信息。
从上面的过程中,我们可以看出,执行手工测试时,Postman就是一个用来,帮我们发送API请求消息和接收响应消息的工具
我们在执行的过程中,有时候还需要手工修改一下Postman API请求中的参数,接收到的消息的时候,也需要我们查看响应消息是否正确。
Postman自动产生文档功能
Postman里面有个功能可以产生文档,Postman注册账号登录后,根据collection
里面保存的API自动生成文档。比如
点击之后就会打开浏览器,浏览器就会打开一个网址,网址是Postman的网址,网址里面就产生了一个文档,对应的是collection
里面的目录
用这个文档的好处是,我们在Postman里面对API做任何的修改,都可以很直观的都可以在浏览器中展示出来,刷新浏览器就可以了。有的人会有疑惑,我这样生成文档有什么用啊,不是已经有接口文档了吗?有的公司就用这个,是因为有的开发人员就用Postman调试,边调试边写这个东西,等他调完了设计完了,文档就自动生成了
现在还有一个问题,假如说你现在是开发人员,你生成了这样一个文档,但是这个文档你不能光自己看,文档要给别人看,我们可以把这个文档发布出来。刚才浏览器打开的网址是你一个人能看的,你是这个账户的拥有者是只有你自己能看的,假如说你把网址发给另一个人,另一个人不登录是没法看的,他会首先让你登录。
假如我们要给别人看,可以点publish
弹出的网页点击Publish Collection
这个时候就发布了,这个网址就是任何人都可以看的。
感兴趣的可以自己操作下。