大纲如下:
/01/ postman下载以及安装
下载地址:http://www.getpostman.com/
官方学习文档:https://learning.getpostman.com/docs/postman/launching_postman/installation_and_updates/
MAC安装:
下载并解压缩应用程序后,双击Postman。系统将提示您将文件移动到“Applications”文件夹中。单击“移至应用程序文件夹”以确保可以正确安装将来的更新。应用程序将在提示后打开。
02 介绍postman以及基本界面介绍
postman是用来干啥的?
支持各种的请求类型: get、post、put、patch、delete 等
支持在线存储数据,通过账号就可以进行迁移数据
很方便的支持请求 header 和请求参数的设置
支持不同的认证机制,包括 Basic Auth,Digest Auth,OAuth 1.0,OAuth 2.0 等
响应数据是自动按照语法格式高亮的,包括 HTML,JSON 和 XML
界面介绍:
1 右侧部分
history:接口请求的历史记录
collection:测试集合
2:
选择请求方式
填写 url、参数、cookies、header、session、鉴权、断言等信息填写
发送请求
3:
查看请求响应结果
4:
添加变量(局部变量、全局变量)
5:
新建接口、collecion等
runner用来做批量测试
03 简单的接口测试
postman接口测试步骤
第一步:选择请求方式
第二步:填写接口地址
第三步:填写依赖信息header、params等
第四步:点击“send”按钮
第五步:查看响应结果
04 鉴权
鉴权,那什么是鉴权?
例如登陆的token、cookies、session,登陆成功后获取,在进行其他接口的request又依赖上个登陆接口的token
Bearer Token
token.png
username && password
username && password.png
cookie
第一步:登陆接口抓包获取cookies
第二步:将cookies添加到header中
image.png
session
05 批量测试
Collections
接口信息:
获得指定用户的自我介绍,及其登记的社交网站信息。
https://www.v2ex.com/api/members/show.json
- Method: GET
- Authentication: None
接受以下参数之一:- username: 用户名
- id: 用户在 V2EX 的数字 ID
06 断言
根据实际情况判断接口成功有非常多的方式
比如返回的Status状态码为200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
返回的succeeded字段值为:true
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include('succeeded": true');
});
查看断言结果:
查看结果.png
常见的断言
获取局部变量的值
pm.environment.get("variable_key");
获取全局变量的值
pm.globals.get("variable_key");
获取变量的值
pm.variables.get("variable_key");
设置一个局部变量
pm.environment.set("variable_key", "variable_value");
设置一个全局变量
pm.globals.set("variable_key", "variable_value");
清除一个环境变量
pm.environment.unset("variable_key");
清除全局变量
pm.globals.unset("variable_key");
发送一个请求
pm.sendRequest("https://postman-echo.com/get", function (err, response) {
console.log(response.json());
});
状态码是200
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
检查响应主体是否包含字符串
pm.test("Body matches string", function () {
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
检查响应主体是否等于一个字符串
pm.test("Your test name", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.value).to.eql(100);
});
查响应主体是否等于一个字符串
pm.test("Body is correct", function () {
pm.response.to.have.body("response_body_string");
});
内容类型是否存在
pm.test("Content-Type is present", function () {
pm.response.to.have.header("Content-Type");
});
响应时间小于200ms
pm.test("Response time is less than 200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
响应的状态吗是201、202的任意一个
pm.test("Successful POST request", function () {
pm.expect(pm.response.code).to.be.oneOf([201,202]);
});
响应主体包含
pm.test("Status code name has string", function () {
pm.response.to.have.status("Created");
});
将XML正文转换为JSON对象
var jsonObject = xml2Json(responseBody);
var schema = {
"items": {
"type": "boolean"
}
};
对于JSON数据使用TinyValidator
var data1 = [true, false];
var data2 = [true, 123];
pm.test('Schema is valid', function() {
pm.expect(tv4.validate(data1, schema)).to.be.true;
pm.expect(tv4.validate(data2, schema)).to.be.true;
});
网友评论