yapi接口测试--自定义脚本编写(高级mock)

使用yapi做接口管理/测试很方便,基础的用法不再介绍,这里记录自定义脚本的编写方法,主要参考官方文档:yapi 文档地址:https://hellosean1025.github.io/yapi/documents/project.html#token

首先yapi可以输入自定义脚本的地方有这么几个:

1.接口级别的

2.项目级别的脚本设置,可以用来处理请求参数,进行身份认证

这里主要记录项目级别的脚本编写,有几个问题:

1.console是输出到了那里呢?

console.log()是输出到浏览器的,按F12就可以

 

2.如何引入第三方依赖库?

yapi内置了基本的依赖库,可以进行常用的加密,网络请求等操作,依赖库是存在context.utils变量中,

 

3.如何发送网络请求?

从上图可以看到context.utils有一个axios依赖库,这是一个网络请求库

4.如何修改请求响应参数?

从上面可以看到有requestBody和responseData,requestHeader,responseHeader等对象,直接给相应的对象赋值就可以

这里贴一个简化版的代码,这是一个生成认证token的代码,其中crypto是crypto-js依赖库,搜索该库即可知道用法:

console.log("the context is:",context)
var crypto = context.utils.CryptoJS;
function GetTimeStamp() {
    var now = new Date();
    return now.getTime() - Math.round(namespace.TimeStamp);
}

function GetRandomString(cnt) {
    var rndstr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    var t = '';
    if (cnt === null || cnt === undefined) cnt = 8;
    for (var i = 0; i < cnt; i++) {
        var r = Math.floor(Math.random() * 62);
        t = t + rndstr[r];
    }
    return t;
}

function mac(token, hmackey, url, host, method, timeDifference) {
    let digest = crypto.HmacSHA256(hmackey+":"+host+":"+url+":"+method, mackey);
    return digest;
}

let body = { access_token: '7F938B2xxxxx',
    expires_at: '2020-02-28T14:51:00.257+0800',
    mac_key: 'QOqiKDBMiM',
    refresh_token: '7F938B205F876FC3411849E1BB2F359A34578yyyyy',
    server_time: '2020-02-21T14:51:00.259+0800',
    user_id: 11111 };
console.log("hello world");

let mactoken = mac(body.access_token, body.mac_key, context.pathname, context.hostname, context.method, 0);
console.log("mactoken is :",mactoken);
context.requestHeader.Authorization = mactoken;

网络认证代码:

console.log(context);
var axio = context.utils.axios;
let authInfo = null;

axios.post('https://xxx.yyy.com/v0.93/tokens', {
		'login_name': 'user001',
		'password': "soi3223www",
        'org_name': "test"
    })
  .then(function (response) {
    console.log("response info:",response.data,response.body);
    authInfo = response.data;
  })
  .catch(function (error) {
    console.log(error);
  });

更多axios的用法可以搜索axios依赖库,这里贴一个连接:https://www.kancloud.cn/yunye/axios/234845

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值