使用postman来进行接口测试的大致步骤:
一、URL和参数的设置,其中参数可以参数化处理:
二、可以设置参数在接口执行之前执行:
三、设置断言,在接口运行后执行:
四、在运行接口之前打开test console可以打开显示运行后的结果界面:
五、接口集合的使用:
如果设置的是引用外面的数据文件,那么需要导入外部文件:
导入的文件类型有两种:
postman的断言(tests)写法:
分类:系统断言函数和自定义js函数
一、关于 status code 的检查
A、检查响应行信息中的状态码是不是等于200:
写法一:
tests["检查响应状态码是否为200"] = responseCode.code === 200;
写法二(可由内置函数自动生成):
pm.test("检查响应状态码是否为200", function () {
pm.response.to.have.status(200);
});
或者:
pm.test("检查响应状态码是否为201或者202", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
B、检查响应行信息中的状态码描述是不是包含“ok”字符:
tests["检查响应状态码描述中是否包含OK字符"] = responseCode.name.has("OK");
或者
pm.test("检查响应状态码描述中是否包含OK字符", function () {
pm.response.to.have.status("OK");
});
二、关于 responseTime 的检查
检查响应时长是否在500ms以内:
tests["检查响应时间是否在500ms以内"] = responseTime < 500;
或者
pm.test("Response time is less than 500ms", function () {
pm.expect(pm.response.responseTime).to.be.below(500);
});
三、关于 responseBody 的检查
检查响应体中包含某个值 contains string
tests["检查响应体中是否含有北京二字"] = responseBody.has("北京");
或者:
pm.test("检查响应体中是否含有北京二字", function () {
pm.expect(pm.response.text()).to.include("北京");
});
检查响应体中的某个字段等于某个值 equal to a string
1/先将json格式的响应体转化为json对象,
var jsonData = JSON.parse(responseBody);
再通过(.)运算将被校验的字段取出,然后进行校验
tests["检查响应体中是否含有北京二字"] = jsonData.XX.XXX === "北京";
或者:
tests["检查响应体中是否含有北京二字"] = jsonData.XX[XXX] === "北京";
2/如果响应体是xml格式,先将xml格式的响应体转化为json对象,
var jsonObject = xml2Json(responseBody);
再通过各种运算将被校验的字段取出,然后进行校验
常用的js函数有:
tests["获取国家个数"] = jsonObject.ArrayOfString.length ----------------------------获取某个节点中的元素个数(长度)
tests["获取首个国家的字符串描述"] = jsonObject.ArrayOfString.string[0] ---------------------------获取某个节点中的某个元素
tests["校验首个国家的ID"] = jsonObject.ArrayOfString.string[0].split(',')[1] === "3320"; -----------------使用 split 方法来分割
上面的语句为索引取值校验,下面为循环取值校验:
for(var i=0; i<jsonData.event_list.length; i++){
title = jsonData.event_list[i].title
tests["titile检查:"+ title] = title.indexOf('小米发布会')>=0;
}
四、关于上下游接口依赖关系的处理:
全局变量设置(setGlobalVariable)和环境变量设置(setEnvironmentVariable)
postman.setGlobalVariable("globalVariable_name",value);
postman.setEnvironmentVariable("environmentVariable_name",value);
断言外引用:
例如:post方法中的请求头body中的参数调用,键值对格式为: 参数名 {{globalVariable_name}}
url中引用 {{globalVariable_name}}
断言内部引用:
globals["globalVariable_name"]
environment["environmentVariable_name"]
五、日志函数
console.log()
六、Collection Runner 的使用
七、postman与newman+jenkins集成完成自动化接口测试
参考文档:https://www.npmjs.com/package/newman
newman -c xxx.json -o outputfile.json
newman run xxx.json -g xxx.json -e xxx.json --reporters cli,json,xml,html --reporter-html-export d:/demo.html