用postman 实现api接口自动化测试

用postman 实现api接口自动化测试

1 下载

https://www.getpostman.com

可能是目前最好用的web接口调试工具
2017-08-30-15-00-06

2 添加接口请求

先来个登录接口

2017-08-31-17-53-38

再来个获取用户信息

2017-08-31-18-04-24

好多接口都是需要header头的token与tempID校验的,每个接口测试都要先登录,然后复制token等参数好麻烦。
请看下面更好的方法。

3 设置环境变量

我们可以将第一个登录接口返回的数据tempID与token设置成环境变量,便于在下一个接口使用。

登录接口tab, 点击Tests,设置环境变量
2017-08-31-18-19-11

var jsonData = pm.response.json();

pm.environment.set("tempID", jsonData.resData.tempID);
pm.environment.set("token", jsonData.resData.token);

获取用户信息tab这边的header头使用{{tempID}}、{{token}} 代替之前的值。
2017-08-31-18-21-42

先点登录接口send,再点获取用户信息接口send,好像不起作用,获取用户信息接口还报错了……

两个接口tab分别点击save 将这两个接口保存起来

2017-08-31-18-25-16
2017-08-31-18-29-41

新建一个名为openApi的Collections,重命名请求接口,保存后在软件左侧看到如下图效果
2017-08-31-18-31-20

点击postman右上角Manage Environments
2017-08-31-18-44-37

新建一个环境
2017-08-31-18-46-37

下拉选择环境
2017-08-31-18-47-20

再来一次:先点登录接口send,再点获取用户信息接口send
2017-08-31-18-50-41

终于正常了。
可以看到,没设置环境之前,设置环境变量是不起作用的。
点击postman右上角的小眼睛,可以看到设置的环境变量列表
2017-08-31-18-52-45


!!!我们有要多个环境,接口http://172.18.7.192/openApi 不应该写死,可以设置一个环境变量放到请求地址上。
2017-08-31-19-05-12

将url改造一下 用{{url}} 代替 http://172.18.7.192/openApi
2017-08-31-19-07-03

再来测试一遍,发现还是正常的。

我们可以设置不同的环境,不同的url变量,这样写好的接口测试就能在不同的环境下测试而不用修改任何东西(前提是:不同环境的测试账号是相同的)。

4 编写测试代码、console调试

postman 是用nodejs 写的,所以测试代码我们可以用js来写。

postman 执行一个http请求过程是这样子的:

请求发起之前执行pre-request-script,可以用来设置一些动态参数。

比如设置一个当前的日期
2017-09-01-16-17-11

请求完毕之后执行 tests 脚本用于验证接口返回数据
2017-09-01-16-21-04

不知道当前postman有哪些变量是可以使用的,可以使用 console.log(this)
打印出来,用postman console 工具看看。
2017-09-01-16-25-07
2017-09-01-16-25-47

5 Runner 自动测试

2017-09-01-16-30-51
看看测试结果
2017-09-01-16-32-44
两个接口的测试代码都是一样的,只做了最简单的测试,请按照自己的需要写更多数据判断。

var jsonData = pm.response.json();
tests["http 状态码是200"] = responseCode.code == 200 //验证http请求是否正常
tests["isSuccess"] = jsonData.isSuccess === 1  //验证返回的json格式数据isSuccess是否等于1

6 导出、newman 自动化测试

每次都是要人工点击才能执行一下,还不能满足某些自动化测试的需求: 每隔一段时间自动跑一次所有接口测试。

newman 是 postman 的命令行程序,是nodejs 的npm包,可实现定时自动化任务。

6.1 导出我们写的测试collections

2017-09-01-16-39-40

6.2 安装newman

在cmd或者其他命令行端执行以下命令(前提是先安装nodejs):
2017-09-01-16-42-05

安装完毕newman后,对刚才导出的postman接口做一遍测试
2017-09-01-16-45-15

导出的json文件,并没有对{{url}} 变量做处理,newman 不认识。手动批量替换一下{{url}},再来一次测试
2017-09-01-16-48-39

可以看到所有的接口测试用例都通过了。

7 各种语言的代码模板

2017-09-01-16-52-38

8 预设请求header头

openApi 每个接口请求都要写如下的header头

Content-Type:application/json
tempID:{{tempID}}
userToken:{{token}}
clientType:7

可以通过presets 将header头数据保存起来,下次新建接口测试,下拉选一下就好了

2017-09-01-16-59-47