-
-
-
-
Postman接口测试
Postman介绍
Postman是一款请求服务接口的工具,可以用来做一些基本的接口请求,也可以使用Postman做一些复杂的自动化接口测试
Postman安装与基本使用
Postman安装
安装分为两种
- 直接安装Chrome浏览器的插件版
由于Postman放弃了对Chrome浏览器插件版本的支持,但是我们现在依然可以使用一些老旧版本的进行安装使用,但是由于稳定性以及支持等,我们推荐使用客户端版本 下载电脑对应版本的客户端版本
- 打开官方网站:https://www.getpostman.com/
- 点击
Download the App
进入下载页面,选择自己系统对应版本 - 下载好安装包进行安装,安装软件较为简单,双击即可自动安装
- 等待安装完成,打开软件会提示登陆等,可以直接关掉登陆页面,然后就可以看到我们的软件首页面
- 直接安装Chrome浏览器的插件版
Postman接口请求
Postman面板介绍
- 其中test按钮我们可以进行一些测试断言
- 其中test按钮我们可以进行一些测试断言
简单接口请求
添加mock接口进行测试
- 新建文件夹用来存放mock的jar包和配置文件
- 新建配置文件
mock.json
文件
[
{
"description": "第一个测试接口",
"request": {
"uri": "/demo01",
"method": "get",
"queries": {
"name": "张三",
"age": "18"
}
},
"response": {
"status": 200,
"json": {
"code": 200,
"msg": "请求成功"
}
}
}
]
- 执行
java -jar moco-runner-0.12.0-standalone.jar http -p 8888 -c mock.json
启动mock
- 使用postman进行我们刚才添加的mock接口进行测试
- 调用百度查询IP的接口,使用浏览器的开发者工具进行请求信息的抓取,进行百度IP查询接口的调用请求
- 我们通过对一些参数的改变和去掉参数列表中部分参数,观察我们的接口是否能正常访问等等的一些测试
带有header头部信息的接口请求
- 我们在之前的mock中添加一个带有header信息的请求
{
"description": "第一个测试接口",
"request": {
"uri": "/demo02",
"method": "get",
"headers":{
"content-type":"application/json;charset=utf8"
},
"queries": {
"name": "张三",
"age": "18"
}
},
"response": {
"status": 200,
"json": {
"code": 200,
"msg": "带有header的请求成功"
}
}
}
- 使用postman进行请求
进行Post请求
- 使用mock添加一个post请求
{
"description": "第一个测试接口",
"request": {
"uri": "/demo03",
"method": "post",
"headers":{
"content-type":"application/json;charset=utf8"
},
"json": {
"name": "张三",
"age": "18"
}
},
"response": {
"status": 200,
"headers":{
"content-type":"application/json;charset=utf8"
},
"json": {
"code": 200,
"msg": "带有header信息的post的请求成功"
}
}
}
如果是需要上传文件的请求
第一种可以在请求中选择body-->binary进行文件的选择以及上传
第二种可以使用form-data-->在下面的Key输入框最后面选择类型为file文件类型
变量设置
变量设置
- 变量分为全局变量和局部变量
- 创建变量点击postman右上角的小齿轮打开设置
- 如果是全局变量在输入值的地方直接输入
{{name}}
进行调用 - 如果是局部变量则需要在设置环境变量的地方进行切换才可以识别
局部变量和全局变量同时存在的时候,局部变量的优先级比全局变量高,会优先被使用
测试沙箱和断言
编写一些脚本需要使用JavaScript语言进行编写
使用设置变量
// 获取一个变量
var name1 = pm.environment.get("name");
var age1 = pm.environment.get("age");
// 使用js的日志功能打印变量
console.log(name1,age1)
// 进行变量的设置
// 在此处设置变量值后,会相对应的改变我们设置的变量值
pm.environment.set("name", "李白");
// 进行变量清除
pm.environment.unset("name");
Test断言功能
需要注意的事有些汉字可能会变为Unicode,可能需要点击Raw来查看具体的返回信息,如果是Unicode则需要注意反斜杠的转义
// 获取请求的状态码进行断言
pm.test("请求状态码200", function () {
pm.response.to.have.status(200);
});
// 响应内容包含某个字符串
pm.test("内容包含某些信息", function () {
pm.expect(pm.response.text()).to.include("带有header信息的post的请求成功");
});
// 对json的值进行校验
pm.test("对返回的json中的code的值进行校验", function () {
// 获取到返回的json数据
var jsonData = pm.response.json();
pm.expect(jsonData.code).to.eql(200);
});
// 请求的响应值等于一个字符串
pm.test("对响应的结果进行完全判断是否和给出的一致", function () {
pm.response.to.have.body("{\"code\":200,\"msg\":\"带有header信息的post的请求成功\"}");
});
// 对响应中的header中的Content-Type值进行检查
pm.test("header中是否包含Content-Type头信息", function () {
pm.response.to.have.header("Content-Type");
});
// 响应时间断言,响应时间小于200毫秒
pm.test("断言响应时间是否小于200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
// 响应状态:成功的post请求
pm.test("post的请求结果中的状态码是否在200,201,202中", function () {
pm.expect(pm.response.code).to.be.oneOf([200,201,202]);
});
// 状态码包含某个字符串
pm.test("状态码是否包含200这个字符串", function () {
pm.response.to.have.status("200");
});
// 将xml转换为jsonObject
var jsonObject = xml2Json(responseBody);
测试管理-测试集和数据驱动
执行测试集
- 我们可以使用postman自带的测试集对我们添加好的测试集进行统一测试
使用数据文件进行动态数据使用
- postman支持json以及CSV格式的数据文件,我们建议使用CSV格式,此格式可以使用Excel打开,更利于我们管理
- 使用notpad++创建一个带有数据的CSV文件,记得文件编码必须为UTF-8
- 使用数据文件后,内容的读取在我们postman中可以使用
data
来代替我们CSV的数据需要什么直接data.列
即可 - 重新使用runner进行测试,并选择我们刚才的CSV文件
- 点击进行测试
Postman进阶-Cookie与token以及参数传递
cookies信息添加
- 在postman中我们可以使用默认的header头部信息中添加cookies信息
- 也可以使用postman中提供的cookies信息的添加面板进行添加
- cookies的信息我们可以使用我们的Chrome浏览器进行查看,或者在接口文档中有时候也会提供
一般来说,我们如果把所有的cookies信息全部添加上去那是肯定没有问题的,但是有些网站的cookies信息非常之多,而且信息量非常之大,一般我们只需要添加SESSIONID等信息即可,或者如果是别的一些信息的话,也可以询问开发或者在接口文档中获得相关的提示或者信息
一般我们进行接口请求的时候需要cookies信息往往是登陆之后的操作需要使用到cookies信息,postman一般在我们调用登陆接口的时候就已经帮我们把所需要的cookies信息缓存到本地