1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > yapi接口测试--自定义脚本编写(高级mock)

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

时间:2020-08-07 06:44:35

相关推荐

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: '-02-28T14:51:00.257+0800',mac_key: 'QOqiKDBMiM',refresh_token: '7F938B205F876FC3411849E1BB2F359A34578yyyyy',server_time: '-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('/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依赖库,这里贴一个连接:/yunye/axios/234845

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。