前端开发发布前端的代码到服务器上后,必须记得清除浏览器的缓存,否则会导致出现环境问题。
Postman介绍(了解):是一款用于调试接口请求的工具,使用简单,功能强大。
Postman安装:
1,下载Postman:https://www.getpostman.com/downloads/
2,双击下载下来的安装包,进行安装
请求方式:Get
请求URL:http://www.baidu.com/s
请求URL中的参数:wd=python
实现步骤:
1,在Postman中设置请求方法为Get
2,在Postman中设置请求URL
3,在Postman的Params中设置请求参数
4,点击Send发送
5,查看响应结果
5,查看响应数据
请求方式:Post
请求URL:http://localhost/index.php?m=Home&c=User&a=do_login
请求体中请求参数:username=13800138006&password=123456&verify_code=8888
实现步骤:
1,在Postman中设置请求方法为Post
2,在Postman中设置请求URL
3,在Postman的form-data中设置请求参数
4,点击Send发送
5, 查看响应结果
响应的Json数据
请求方式:Post
请求URL:http://182.92.81.159/api/sys/login
请求体中请求参数:{“mobile”:“13800000002”,“password”:“123456”}
请求头:{“Content-Type”:“application/json”}
实现步骤:
1,在Postman中设置请求方法为Post
2,在Postman中设置请求URL
3,在Postman的Headers中设置请求头
4,在Postman的raw中设置请求参数
5,点击Send发送
6,调试响应数据
1,新建Collection
2,添加文件
3,添加请求
案例1 断言响应状态码:
// 断言IHRM登陆接口返回的响应数据中的响应状态码是否为200
pm.test("判断HTTP响应状态码是否为200", function () {
pm.response.to.have.status(200);
});
案例2和案例3
断言包含字符串和断言响应体
// 断言响应数据中是否包含某个字符串
pm.test("文本形式的响应体中是否包含'操作成功'四个字", function () {
pm.expect(pm.response.text()).to.include("操作成功");
});
// 断言响应体是否完全等于某个字符串
// 注意:登陆接口返回的data是令牌,而令牌有失效时间,失效后会重置为另外一个令牌,导致响应体的断言失败
pm.test("Body is correct", function () {
pm.response.to.have.body('{"success":true,"code":10000,"message":"操作成功!","data":"06ce0b59-2908-42aa-9eef-185bd1db7620"}');
});
案例4和案例5
断言Json数据和响应头
// 注意:Json数据的断言只能断言Json数据,不能断言HTML,XML,
// 图片等非Json数据
// 断言Json数据
pm.test("断言Json数据中的message", function () {
// 获取Json格式的响应体
var jsonData = pm.response.json();
// jsonData.message是指实际的Json数据,eql(100)是指是否等于预期数据
pm.expect(jsonData.message).to.eql("操作成功!");
});
// 断言Json数据中的success
pm.test("断言Json数据中的success", function () {
// 获取Json格式的响应体
var jsonData = pm.response.json();
// jsonData.success是指实际的Json数据,eql(100)是指是否等于预期数据
pm.expect(jsonData.success).to.eql(true);
});
// 判断响应数据中的响应头里面有没有Content-Type
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
全局变量(了解):全局唯一的变量
环境变量(了解):
扩展内容(重点):
全局变量和环境变量的变量名称重复时,Postman会优先使用环境变量
全局变量或者环境变量中的变量名称重复时,会优先使用最下面的变量
1 手动设置全局变量
2 检查设置的全局变量
3 在请求参数中引用全局变量
通过{{var}}进行引用
4 在代码中设置全局变量
// 设置全局变量
pm.globals.set("global_password","123456")
点击右上角的齿轮->点击ADD->设置环境变量
在请求参数中获取环境变量的方法和全局变量一致
在代码中设置和获取环境变量
// 点击Set an environment variable,设置环境变量
// 注意:保存的环境变量是指选定的环境,如果没有选定,那么设置会失败
pm.environment.set("env_type", "application/json");
// 在代码中获取和在控制台打印结果
console.log("获取环境变量的结果为:" + pm.environment.get("env_type"))
Postman调用脚本流程图:
注意:在Tests中能够获取到响应数据,而在执行请求前置脚本中不能获取到响应数据(为什么?因为请求前置脚本是在发送请求之前执行的代码)
1,在pre-request script中编写代码
// 获取时间戳
var timestamp2 = new Date().getTime()
// 查看时间戳
console.log("生成的时间戳为:" + timestamp2)
// 保存时间戳到环境变量
pm.environment.set("env_timestamp", timestamp2);
2, 查看保存的时间戳
通过Postman内置随机数进行引用:$guid
{{$guid}}
参数关联:是指多个接口之间有依赖关系的时使用的技术
使用方法:
1,在A接口中获取Json数据并保存关联的变量到环境变量
2,在B接口中引用保存的环境变量
代码:
// 在Tests标签页中编写获取返回数据的代码
// 获取Json数据
var jsonData = pm.response.json()
// 保存JsonData到环境变量
pm.environment.set("env_var", jsonData)
// 在B接口中引用
// 引用方法:在请求参数中通过{{env_var}}引用,在脚本中手动获取引用
案例:调用查询天气接口,获取到该接口返回的城市,然后使用百度搜索接口搜索获取到的城市
注意:Postman可以进行性能测试,但是不建议使用他,为什么呢?因为Postman的测试结果有很大误差。
1,我们要设计要测试的接口
2,分析接口,构造数据文件
json,csv
3, 关联数据文件中的变量到接口的数据当中
4,通过Runner引入数据文件,进行自动化接口测试,或者说数据驱动测试,实现参数化关联
1,newman的介绍
newman是一个使用node.js开发的支持Postman接口测试的工具,并且能够生成测试报告
2,安装newman
安装node.js
1,下载node.js
2,运行下载的安装包,按照安装向导进行安装
安装newman
打开cmd窗口,输入node -v确认node.js已经安装
输入npm install -g newman,安装newman
注意:一定要保证网络的通畅;如果安装过程中出现了Error错误,那么需要进一步分析。
安装newman的插件
打开cmd窗口,输入npm install -g newman-reporter-html即可完成安装
检查方法:
1 打开Newman所在的数据文件目录,检查有没有newman-reporter-html这个文件夹(初步确认)
2 使用newman命令执行测试用例集生成测试报告,如果没有html的报告,那么证明安装失败
使用newman运行测试用例集生成测试报告
4,使用newman生成测试报告
newman run IHRM数据驱动-json.postman_collection.json -e 测试环境.postman_environment.json -d ihrm_login_data.json -r html --reporter-html-export report.html