0


3天精通Postman---动态参数;断言;CSV数据驱动;Mock Server

DAY2课题:Postman接口关联&动态参数&断言&CSV数据驱动

一、接口关联,接口依赖,多接口串联,组合API

第一个接口的返回值作为第二个接口的参数。

javascript通用语法:

1.所有的符号都必须是英文状态下的符号

2.每一句代码后都必须有;结束。有if或for除外。

3.变量通过var定义。

**第一种接口关联方式:json提取器的方式实现接口关联,只能针对Josn数据 **

//打印
console.log(responseBody);
//把返回的json字符串转换成对象。
var jsonObj = JSON.parse(responseBody);
//从对象中取出access_token的值并设置全局变量
pm.globals.set("access_token",jsonObj.access_token);

**第二种接口关联方式:正则表达式提取器的方式实现接口关联,所有数据都可以。 **

//通过返回的结果匹配一个正则表达式去得到需要的值
var datas = responseBody.match(new RegExp('"access_token":"(.*?)"'));
//从变量中取出access_token的值并设置全局变量
pm.globals.set("access_token",datas[1]);

**其他的方法: **

1.获取响应头的值

var content_type = postman.getResponseHeader("Content‐Type");
console.log(content_type);

2.获取响应的Cookie的值

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

3.如果返回的是xml的值,那么可以转化成对象

var jsonObject = xml2Json(responseBody);

二、Postman的动态参数(随机数)

1.内置的动态参数:**有局限。局限在于无法断言。 **

{{$timestamp}} 生成当前时间的时间戳

{{$randomInt}} 生成0-1000的随机数

{{$guid}} 生成一个很长的GUID的随机字符串

2.自定义的动态参数或函数。

自定义时间戳参数

//自定义动态参数时间戳
var times = Date.now();
console.log(times)
//设置为全局变量
pm.globals.set("times", times);

随机整数

//随机数
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) +min; 
//打印 
console.log(randomMobile(100000000,999999999));

随机手机号

//随机数
const randomInt = (min, max) => Math.floor(Math.random() * (max - min + 1)) +min; 
//随机手机号
var randomMobile = `18${randomInt(100000000,999999999)}`; 
//打印 
console.log(randomMobile);

等待N秒实现:有些接口有调用时间限制,5秒之内只能调用1次。

const sleep = (milliseconds) => {
    const start = Date.now();
    while (Date.now() <= start + milliseconds) {}
    };
    //等待5秒
    sleep(5000)
    console.log("---------结束----------");

三、Postman的环境变量和全局变量

全局变量:在所有环境所有接口都可以访问的变量。

环境变量:在当前环境所有接口都可以访问的变量。

四、Postman断言

断言是判断预期结果和实际结果是否一致。

1.状态断言:断言返回码为200,一般只有一个。

2.业务断言:判断最核心的业务关键字。可以有多个。

断言状态码为200(必用)

断言返回的结果中包含有一个字符串。(常用)

断言检查返回的json对象中的字段值。(一般用于当返回是json对象时)

断言返回的body等于一个字符串。(一般用于当返回的结果很少时)

检查是否包含有Content-type的响应头

检查请求耗时少于200ms

检查post请求的响应码是否是一个值

检查返回的信息是否是一个字符串

//状态断言:检查返回的状态码为200 
pm.test("检查返回的状态码为200", function () {
    pm.response.to.have.status(200);
    });
//业务断言:检查返回的结果中包含有access_token字符串
pm.test("检查返回的结果中包含有access_token字符串", function () {
    pm.expect(pm.response.text()).to.include("access_token");
});
//检查返回的结果中的json里面的expires_in的值为7200
pm.test("检查expires_in的值为7200", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.expires_in).to.eql(7200);
});
//检查返回的body等于一个字符串
// 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);
});
//断言状态码在一个区间
pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([200, 202]);
});
//断言返回信息
pm.test("Status code name has string", function () {
    pm.response.to.have.status("OK");
});

**在断言中不能通过{{}}获取全局变量:可以通过以下方式获取: **

pm.globals.get("times")

全局断言

五、其他接口类型

**1.文件上传接口。 **

**2.必须带请求头的接口。 **

1.抓包工具中复制请求头

2.Bulk Edit编辑请求头

3.Key-Value Edit转化成

标签: postman 测试工具

本文转载自: https://blog.csdn.net/weixin_41121249/article/details/126623610
版权归原作者 天草柑橘 所有, 如有侵权,请联系我们删除。

“3天精通Postman---动态参数;断言;CSV数据驱动;Mock Server”的评论:

还没有评论