Postman(二)接口关联依赖-动态参数-断言

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

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

精通javascript脚本 常用的固定的记住。不常用不需要记,只需要把笔记保存好

面试必问!!!除机试外,你只需要口头表达即可

javascript通用语法:

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

  2. 并且每一句后面必须以分号;结束

  3. 变量通过var定义

第一种接口关联方式:json提取器的方式实现接口关联(在第一个接口把返回值转换成对象,并把值取出来,设置成一个全局变量,在第二个接口,引用全局变量)

只能针对json数据

//打印

//console.log("打印");

console.log(responseBody);

//把返回的json字符串转换成对象。

var jsonObj=JSON.parse(responseBody);

//从对象中取出access_token值并设置成全局变量

pm.globals.set("access_token",jsonObj.access_token);

在第二个接口; {{access_token}}

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

  1. 在第一个接口:

//通过返回的结果匹配一个正则表达式去得到需要的值

var datas = responseBody.match(new RegExp

('"access_token":"(.*?)"'));

//打印

pm.globals.set("access_token",datas[1]);

在第二个接口; {{access_token}}

其他方法:

  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的随机字符串

  1. 自定义的动态参数

  • //自定义动态参数时间戳

  • var times = Date.now();

  • console.log(times);

  • //设置为全局变量

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

  1. 随机整数

// const randomInt =(min, max)=> Math.floor(Math.random()*(max - min +1)+min;

// console.log(randomInt(100000000,999999999));

  1. 随机手机号

  • //随机数

const randomInt =(min, max)=> Math.floor(Math.random()*(max - min +1)+min;

var randomMobile = '18${randomInt(100000000,9999999)}';

console.log(randomMobile);

  1. 等待N秒实现 有些接口有调用限制,比如3秒调用一次

const sleep = (milliseconds) => {

const start = Date.now();

while (Date.now()<= start + milliseconds){}

};

//等待3秒

sleep(5000)

console.log("--------结束----------")

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

全局变量:在任何接口里面都可以访问的变量。

 

环境变量:在当前环境下每个接口都可以访问的量。

 

 

四、 Postman断言

断言是判断预期结果和实际结果是否一致。
  1. 状态断言:断言返回码为200,一般只有一个。

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

Status code:Code is 200

* 判断状态码为200(必用)

//------------------------------

//状态断言:检查返回的状态码为200

pm.test("检查返回的状态码为200", function () {

pm.response.to.have.status(200);

});

Response body :Contains string

  • 断言返回的记过包含一个字符串(常用于比较长的且唯一的值)

//业务断言:检查返回结果中包含有access_token字符串

pm.test("检查返回结果中包含有access_token字符串", function () {

pm.expect(pm.response.text()).to.include("access_token");

});

Response body:JSON value check

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

//检查返回的结果中的json里面的expires_in的值为7200

pm.test("检查返回的结果中的json里面的expires_in的值为7200", function () {

var jsonData = pm.response.json();

pm.expect(jsonData.expires_in).to.eql(7200);

});

Response body:is equal to a string

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

//检查返回的body等于一个字符串

//pm.test("Body is correct", function () {

// pm.response.to.have.body('{"errcode":0,"errmsg":"ok"}');

//});

Response headers:Content-Type header check

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

//检查断言响应头中有Content-Type

pm.test("Content-Type is present", function () {

pm.response.to.have.header("Content-Type");

});

Response time is less than 200ms

* 检查是否请求耗时少于200ms

//断言时间少于200ms

pm.test("Response time is less than 200ms", function () {

pm.expect(pm.response.responseTime).to.be.below(200);

});

Status code:Successful POST reques

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

//断言状态码在一个区间

pm.test("Successful POST request", function () {

pm.expect(pm.response.code).to.be.oneOf([200, 202]);

});

Status code:Code name has string

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

//断言返回信息

pm.test("Status code name has string", function () {

pm.response.to.have.status("Created");

});

在断言中不能通过{{}}方式获取全局变量

可以通过以下方式 获取全局变量再进行拼接

  • pm.globals.get("times");

全局断言:一般只断言状态码

//------------------------------

//状态断言:检查返回的状态码为200

pm.test("检查返回的状态码为200", function () {

pm.response.to.have.status(200);

});

  •  

 

posted @ 2022-01-11 15:44  NiceTwocu  阅读(700)  评论(0)    收藏  举报