外部接口:被测系统与外部其他系统之间的接口
内部接口:被测系统内部各个子模块之间的接口
测试接口重点:检查接口参数的正确性、接口功能的正确性、输出结果的正确性、以及对各种异常场景的容错处理和权限控制
https://www.postman.com/download
请求页签说明:
响应页签说明:
// 打印
console.log(responseBody)
// JSON 提取器:把返回的结果转化成JSON对象
var jsdata = JSON.parse(responseBody)
// 取值,并设置为全局变量
pm.globals.set("access_token", jsdata.access_token);
// 打印
console.log(responseBody)
// 正则表达式提取器,match匹配,new RegExp新建正则表达式
var data = responseBody.match(new RegExp('"access_token":"(.*?)"'));
// 取值并设置为全局变量
pm.globals.set("access_token", data[1]);
let salt = "xxx";
let param = request.data; //post 参数
let queryParam = pm.request.url.query.members; //get中的参数
//将post和get合并,并且移除sign参数
for (let i in queryParam) {
if (queryParam[i].key == "sign") {
continue;
}
param[queryParam[i].key] = queryParam[i].value;
}
//时间戳参数
param.time = (new Date()).getTime().toString();
pm.environment.set("reqtime", param.time);
//排序
param = objSort(param);
//json,然后生成签名
jsonStr = JSON.stringify(param).toString();
let sha1Str = CryptoJS.SHA1(salt+jsonStr).toString();
let md5Str = CryptoJS.MD5(sha1Str).toString();
postman.setGlobalVariable("sign", md5Str);
//排序方法
function objSort(obj)
{
let keys = Object.keys(obj).sort();
let arr = {};
for (let i in keys) {
arr[keys[i]] = obj[keys[i]];
}
return arr;
}
Postman内置动态参数:
自定义动态参数
// 获取系统当前时间
var times = Date.now();
// 把时间设置为全局变量
pm.globals.set("times",times)
一般会有两个断言
Status Code :Code is 200 断言返回的状态码为200
Response body:Contains string 断言返回的body中包含有一个字符串
Response body:JSON value check 检查json中的其中的一个值
Response body:is equal a string 断言返回的body等于一个字符串
Response headers:断言响应头包含Content-Type
Response time is less than 200ms 断言请求的时间小于200ms
// 状态断言
pm.test("断言返回的状态码为200", function () {
pm.response.to.have.status(200);
});
// 业务断言
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("access_token");
});
自定义动态参数的断言方式
全局断言
注意:
if(responseBody.search("access_token") != -1){
// 正则表达式提取器,match匹配,new RegExp新建正则表达式
var data = responseBody.match(new RegExp('"access_token":"(.*?)"'));
// 取值并设置为全局变量
pm.globals.set("access_token", data[1]);
}
// 取数据文件中的断言
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include(data.value);
});
1、什么是Cookie
cookie就是一小段文本信息,客户端第一次请求服务器时生成
2、cookie鉴权的原理
当客户端第一次请求服务器时,服务器会生成cookie。然后在第一个返回时在响应头的Set-Cookie里面把所有的Cookie传输给客户端,并且在客户端保存。
当客户端第2-n次请求服务器时,那么在请求头的Cookie就会带上所有的Cookie来实现鉴权
3、Cookie鉴权实战
1、Mock介绍
使用场景:前后端分离,后端的接口没有完成时,前端已经完成,但是前端的业务流程依赖于后端的接口,需要测试自己去Mock接口。
2、Mock使用
// Postman的Md5加密
var username_md5 = CryptoJS.MD5("admin").toString().toUpperCase();
var password_md5 = CryptoJS.MD5("123").toString().toUpperCase();
console.log(username_md5)
console.log(password_md5)
// 设置成全局变量
pm.globals.set("username_md5", username_md5);
pm.globals.set("password_md5", password_md5);
1.导出接口测试项目中的:测试用例、全局变量、环境变量、数据文件
2.使用命令执行测试
newman run "/filepath/testcase.json" -e "/filepath/environment.json" -g "/filepath/globals.json" -r cli,html,json,junit --reporter-html-export '/filepath/report.html'