文章目录
1.postman介绍
介绍
Postman是一款非常流行的接口调试工具,它使用简单,而且功能也很强大。不仅测试人员会使用,开发人员也会经常使用。
特点
- 简单易用的图形用户界面
- 可以保存接口请求的历史记录(save request)
- 使用测试集Collections可以更有效的管理组织接口
- 可以在团队之间同步接口数据
2.postman基本用法
- Postman发送URL参数
- Postman发送表单数据
- Postman发送JSON数据
2.1. Postman发送URL参数
案例:
1.需求
- 访问TPshop搜索商品的接口,通过查询字符串的方式传递搜索的关键字 iPhone ,并查看响应数据
- 请求路径格式为: http://localhost/Home/Goods/search.html?q=iPhone
2.分析实现
请求方式:GET
请求路径: http://localhost/Home/Goods/search.html?q=iPhone
传参方式:查询字符串
实现步骤
1.设置请求方式:get
2.输入请求路径:http://localhost/Home/Goods/search.html?q=iPhone
3.设置请求数据:q iphone
4.点击发送请求:send
5.查看响应数据
示例截图
对比抓包的响应结果
2.2 Postman发送表单数据
需求
1.请求TPshop项目的登录接口,请求数据(username: 12345678911, password: 123456, verify_code: 1234)
2. 登录接口URL:http://localhost/index.php?m=Home&c=User&a=do_login
分析实现
请求方式:post
请求路径: http://localhost/Home/user/login
传参方式:请求体-表单提交(username: 12345678911, password: 123456, verify_code: 8888)
实现步骤
1.设置请求方式:post
2.输入请求路径:http://localhost/Home/user/login
3.设置请求参数:(username: 12345678911, password: 123456, verify_code: 8888)
5.点击发送请求:send
6.查看响应数据
示例截图
对比抓包的响应结果
2.3 Postman发送JSON数据
需求
- 请求IHRM项目的登录接口,请求数据( {“mobile”:“13800000002”, “password”:“123456”} )
- 登录接口URL:http://182.92.81.159/api/sys/login
分析实现
请求方式:post
请求路径: http://182.92.81.159/api/sys/login
传参方式:JSON数据( {“mobile”:“13800000002”, “password”:“123456”} )
实现步骤
1.设置请求方式为post
2.输入请求路径
3.设置请求头
4.设置请求体
5.点击发送请求
6.查看响应数据
示例截图
3.postman的高级用法
postman的高级用法
- 管理用例
- Postman断言
- 全局变量与环境变量
- 请求前置脚本
- Postman关联
- 批量执行测试用例
- 读取外部文件实现参数化
3.1 管理用例
实现步骤
- 创建测试集-New Collection
Collection可以理解成一个项目(系统),包含多个接口请求- 创建目录-Add Folder
Folder可以理解成一个项目模块- 添加请求-Add Request
3.2 Postman断言
断言
让程序判断执行结果是否和预期一样;
特点
pastman的断言通常由javascript语言编写(写在’Tests’标签里)
Tests中的脚本通常在发送请求之后执行,把断言结果(PASS/FAIL)最终在Test Result标签页显示
常用的postman断言
1.Status code: Code is 200
// 判断响应状态码是否等于200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
2.Response body: Contains string
// 判断响应体中是否包含指定的字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
3.Response body: Is equal to a string
// 判断响应体数据是否等于指定的字符串
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
4.Response body: JSON value check
// 校验响应的JSON数据
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
5.Response headers: Content-Type header check
// 判断响应头中是否包含指定的头标签
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
判断响应状态码是否等于200
3.3 全局变量与环境变量
概念
全局变量 :是全局唯一的变量,不可重复定义的变量;
环境变量:
- 一个变量只能属于某个环境,在某一个环境中变量不可重复定义
在环境与环境之间可以定义重复的变量- 一个环境可以包含多个环境变量
- 常见环境分类:开发环境、测试环境、生产环境
设置变量
- 全局变量 :
1.手动设置
2.代码设置:pm.globals.set(“var_name”, value);
- 环境变量:
1.手动设置
2.代码设置:pm.environment.set(“var_name”, value);
代码设置
获取变量值
全局变量
- 请求参数中获取:{{var_name}}
- 代码中获取: var value = pm.globals.get(“var_name”);
环境变量
- 请求参数中获取:{{var_name}}
- 代码中获取: var value = pm.environment.get(“var_name”);
3.4 请求前置脚本
概念
请求前置脚本就是在“Pre-request Script”标签中所编写的脚本,是在请求发送之前要执行的代码片段。
应用场景
请求参数中包含一个随机数或者时间戳
请求之前需要对请求参数做进一步处理(如:对敏感参数进行加密)
案例
- 需求: 请求TPshop项目中获取图片验证码的接口,需要在URL中设置随机数
- 请求路径: http://localhost/index.php?m=Home&c=User&a=verify&r=0.6569606479434671
- 分析: 在JS中如何生成随机数? var r = Math.random(); // 返回[0, 1)之间的随机数
请求实现
3.5 Postman关联
概念
当请求之间有依赖关系,比如后一个接口的请求需要依赖前一个接口的响应数据,一般通过全局变量或者环境变量来进行参数之间的传递。
实现
- 要获取某个请求的响应结果数据,可以通过在‘Tests’标签页中编写JavaScript脚本来实现
// 获取JSON格式的响应数据
var jsonData = pm.response.json();
- 多个请求之间可以使用全局变量或环境变量来传递数据
// 把数据保存到全局变量中
pm.globals.set("city", city);
- 获取某个全局变量的值:{{var_name}}
postman关联案例
基于天气接口返回百度的查询城市信息
步骤
- 请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html
- 获取返回结果中的城市名称
- 调用百度搜索接口: http://www.baidu.com/s?wd=北京 ,把获取到的城市名称作为请求参数
3.6 批量执行测试用例
概念
要想批量执行测试用例,需要先把接口请求添加到测试集中,通过运行测试集的方式就可以实现批量运行测试用例。
步骤
3.7 读取外部文件实现参数化
应用场景:
针对于某个接口,如果有大量的测试数据需要批量验证,可以把测试数据保存到数据文件中,通过参数化的方式来实现。
定义数据文件
常用的数据文件格式:
CSV、JSON
获取数据文件中的参数
在不同的地方获取参数的方法是不同的,介绍两种获取参数的方法:
- 请求参数可以通过{{var_name}}来引用;
- 断言中的数据,由于是在Tests中编写脚本,并不能直接通过{{var_name}}来引用,可以通过内置变量 data 来获取。
// 获取数据文件中的用户名参数
var username = data.username;
案例:批量查询手机号归属地和所属运营商信息,并校验运营商数据是否正确
接口地址: http://cx.shouji.360.cn/phonearea.php?number=13012345678
前置条件(设置断言)
//断言
pm.test("运营商信息", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.data.sp).to.eql(data.sp);
});
前置条件(准备测试数据)
4.postman测试报告
Newman
Newman是一款基于nodejs开发的可以运行Postman脚本的工具,并可以生成测试报告;