postman测试工具的使用

 

 

1. postman结构

1. 请求部分的页签

Params: 用于在get请求传参

Authorization: postman自带鉴权功能

Headers: 请求头

Body: post请求传参

  none: 没有参数

  form-data: 既有文件又有键值对

  x-www-form...: 只传输键值对

  raw: 传输Json, txt, xml, html, js数据

  binary: 把文件以二进制方式进行传输

Pre-request Script: 接口请求之前的脚本, js

Tests: 断言的代码

Cookies: Postman的cookie管理器

code: 生成接口自动化脚本

2. 响应部分页签

Body: 返回的数据

  Pretty: 以json格式展示

  Raw: 以文本格式展示

  Preview: 以网页格式展示

cookie: 返回的cookie信息

Headers: 响应头

TestResults: 断言结果

status: 状态码

time: 消耗的时间

szie: 字节数

 

2. postman内置动态参数

企业当中做接口测试的时候经常出现的接口不能把参数写死

  1. 时间戳: {{$timestamp}}

  2. 生成0-1000的随机数: {{$randomint}}

  3. 生成一个GUID的字符串: {{$guid}}   很长的一个字符串

 

3. Postman环境变量和全局变量

环境种类: 开发环境, 测试环境, 预发布环境, 线上环境

环境变量和globals都是全局变量

 

4. 接口关联

1. JSON提取器

// 提取access_token的值

var jsValue = JSON.parse(responseBody)

console.log(jsValue.access_token)

//把提取的值保存到全局变量

pm.globals.set("access_token", js.Value.access_token);

2. 正则表达式提取器

// 使用正则表达式提取  match 匹配, new RegExp新建规则

var flag_id = responseBody.match(new RegExp('"id":(.+?),'))[1]

console.log(flag_id)

pm.globals.set("flag_id", flag_id);

 

5. 断言

八大断言方式(位置: postman -> 请求页签 -> tests)

//1. 断言返回码为200        用于状态断言
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});


//2. 断言返回的结果中包括有一个指定的字符串      用于业务断言

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});


//3. 对返回的结果做json字段的检查      用于业务断言

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

//4. 断言返回的结果等于一个字符串      用于业务断言

pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

//5. 断言响应头中包含有指定的响应头

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

//6. 断言接口请求的时间少于200ms      用于性能断言

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

//7. 断言一个post请求的返回的状态码是否在指定的范围内

pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});

//8.断言返回的状态码信息中包含指定的字符串

pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});

 精确断言: 

 在 Pre-request Script中编写前置断言脚本

var times = Data.now()

pm.globals.set("times", times);

例: //业务断言(精确断言)

pm.test("Body matches string", function()){

   pm.expect(pm.response.text()).to.include("token"+pm.globals.get("times"));

});

全局断言:

用于状态断言