postman的使用

一、postman的常规操作

1.1 get请求使用方式

1.1.1 get请求

 

Params:get请求传参。
Authorization:鉴权
Headers:请求头
Body:post请求传参:
f  orm-data:即可以传键值对,也可以传文件。
  x-www-from-urlencoded:只能传键值对
  raw:传json,xml,javascript,txt.html
  binary:把文件转化成二进制传参。
Pre-requests Script:接口请求之前的脚本。
Tests:接口请求之后的脚本。
Settings:设置。
Cookie:是Postman自动的管理Cookie信息的按钮。

1.1.2 get响应

 

Body:响应的数据
Pretty:可以以json,xml,html,txt查看响应数据。
Raw:以文本的格式查看响应数据
Preview:以网页的形式查看响应数据
Cookies:响应的Cookie信息
Headers:响应头信息
Test Results:查看断言结果
  状态码:200
  状态信息:OK
  接口数据返回耗时:182MS
  接口返回的数据量:343个字节。

1.2 post请求使用方式

 

 

1.3 get与post的区别

1.get请求是获取数据,而post请求一般都是提交数据。
2.post请求比get安全。
3.本质的区别是:传输的方式不一样,get在url的后面以?的方式传参,多个参数之间用&分隔。post是通过body表单传参。

1.4 部分微信公众号接口测试

1.4.1 获取 微信公众号Access token接口

https://www.cnblogs.com/wangyong123/articles/18349158#_lab2_3_0

1.4.2 获取微信公众号已创建的标签接口

https://www.cnblogs.com/wangyong123/articles/18349158#_lab2_3_1

 

1.4.3 获取微信公众号编辑标签接口

https://www.cnblogs.com/wangyong123/articles/18349158#_lab2_3_2

 

二、接口关联和接口依赖

下一个接口的参数是使用的上一个接口的返回值?

.1 JSON提取器(都是从返回值里面提取)

2.1.1 设置响应数据为全局变量

//javascript脚本,var定义变量
//打印responseBody返回值
console.log(responseBody)
//使用json提取器把responseBody返回值转化成一个字典。
var jd = JSON.parse(responseBody)
//提取access_token,并且设置为全局变量(就是在任何接口请求都可以访问的变量)
pm.globals.set("access_token",jd.access_token);

2.1.2 使用上一个用例返回的全局变量

{{access_token}}

2.2 正则表达式提取器(都是从返回值里面提取)

var token = responseBody.match(new RegExp('"access_token":"(.*?)"'));
//提取access_token,并且设置为全局变量(就是在任何接口请求都可以访问的变量)
pm.globals.set("access_token",token[1]);

2.3 从响应头里面中去提取

//从响应头里面提取变量
var types = postman.getResponseHeader("Content‐Type")
console.log(types)

2.4 从Cookie里面中去提取

//从Cookie里面提取变量   
// 访问phpwind论坛首页接口  https://www.cnblogs.com/wangyong123/articles/18350271#_lab0

var csrf_token = postman.getResponseCookie('csrf_token');
console.log(csrf_token.value)

三、Postman的动态参数

接口测试中常常会出现接口的参数不能写死,必须使用随机数来实现。

3.1 内置的动态参数

{{$timestamp}} 时间戳

{{$randomInt}} 随机的0-1000的整数

{{$guid}} 随机的很长的字符串

 

3.2 自定义动态参数(重点)

//自定义的时间戳
var times = Date.now();
pm.globals.set("times",times);
//让接口请求停留3秒(3秒灌水机制),time.sleep(3)
const sleep = (milliseconds) => {
    const start = Date.now();
    while (Date.now() <= start + milliseconds) {
        
    }
};
sleep(3000);

3.2.1 请求之前设置参数

//自定义的时间戳
var times = Date.now();
pm.globals.set("times",times);

//让接口请求停留3秒(3秒灌水机制),time.sleep(3)
const sleep = (milliseconds) => {
    const start = Date.now();
    while (Date.now() <= start + milliseconds) {
        
    }
};
// 请求之前停留三秒打印 321
sleep(3000);
console.log(321);

 

3.2.2 请求过程中使用参数

 {"tag":{"id":134,"name":"王勇{{times}}"}}

 

3.2.3 请求结束之后断言

//让接口请求停留3秒(3秒灌水机制),time.sleep(3)
const sleep = (milliseconds) => {
    const start = Date.now();
    while (Date.now() <= start + milliseconds) {
        
    }
};

// 请求之前停留三秒打印 123
sleep(3000);
console.log(123);

四、Postman的断言

// 断言返回码为200
// 断言返回结果中包含指定的字符串
// 断言并检查返回的JSON数据
// 断言返回的值等于一个字符串
// 断言响应头包含Content-type
// 断言响应时间少于200M

// 断言返回吗为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");
});

// 断言并检查返回的JSON数据
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");
});

// 断言响应头包含Content‐type
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);
});

 

posted on 2024-11-04 14:58  软饭攻城狮  阅读(2)  评论(0编辑  收藏  举报

导航