脚本库
脚本库是一个函数的集合,用来集中定义和管理公用、通用函数,从菜单流程管理->脚本库进入定义。脚本库不能在浏览器节点中应用。
脚本库调试,不支持部分内置函数,因为不能获取实例上下文参数,运行环境可支持。
包管理
定义脚本库前需要定义脚本库的包,这里的包就是一个分类,如我们把mock数据的脚本库定义个包,便于维护管理。模拟生成真实数据在自动化测试,演示中非常有用。
脚本定义
选中一个包,点击工具栏的+脚本按钮,输入脚本名称保存完成脚本定义,脚本名称只能是英文字符。
在定义完成的脚本列表中点击编辑脚本,即可编写脚本。脚本一般以函数的方式编写。
mockFullName
用法
mockFullName()
返回
随机返回一个人的姓名
可以copy以下参考代码建立自己的mockFullName脚本库
function mockFullName(){
//百家姓
var surnames = ["赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹"];
//名称
var personalname = ["星辰", "美丽", "翔", "淑华", "晶莹", "云浩", "正气", "雨涵", "嘉怡", "佳毅", "皓月", "佳琪", "紫轩", "瑞辰", "昕蕊", "萌", "明远", "欣宜", "泽远", "欣怡", "子璇", "淼", "国栋", "夫子", "悦心", "甜", "敏", "尚", "国贤", "贺祥", "越峰", "昊轩", "启悦", "皓然", "建国", "益冉", "瑾春", "月仙", "雅芬", "章章", "文昊", "大东", "雄霖", "浩晨", "熙涵", "切瑞", "枫叶", "欣欣", "宜豪", "欣慧", "建业", "建林", "亦菲", "皓轩", "冰洁", "佳欣", "涵涵", "月辰", "淳美", "恩铭", "伟洋", "清妍", "诗悦", "嘉乐", "晨涵", "天赫", "玥傲", "佳昊", "天昊", "萌萌", "若萌", "佳怡", "欧莱", "晨茜", "晨璐", "运昊", "梦欣", "淑君", "晶滢", "润莎", "榕汕", "乐毅", "佳玉", "晓庆", "一鸣", "语晨", "添池", "田心", "雨泽", "雅晗", "雅涵", "美欣", "树佳", "文轩", "檀丽", "欣源", "梦雅", "榕润", "欣汝", "慧嘉", "建新"];
var i = parseInt(10 * Math.random())*10 + parseInt(10 * Math.random());
var j = parseInt(10 * Math.random())*10 + parseInt(10 * Math.random());
return surnames[i]+ personalname[j];
}
在流程定义中可以用import导入脚本库中的函数,语法:import("函数名");
import需要注释,只能用块注释 /*import("");*/ 不能用行注释//import("")。
import("mockFullName");
name = mockFullName();
print(name);//随机姓名
mockBankNo
用法
mockBankNo()
返回
随机返回一个银行卡卡号
参考代码
function mockBankNo() {
var arrStr = ['0102', '0103', '0105', '0301', '104', '0303', '305', '0306', '0308', '0410', '302', '304', '309', '310', '315', '316']
var bank_no = arrStr[Math.floor(Math.random() * arrStr.length)]
var prefix = ''
switch (bank_no) {
case '0102':
prefix = '622202'
break
case '0103':
prefix = '622848'
break
case '0105':
prefix = '622700'
break
case '0301':
prefix = '622262'
break
case '104':
prefix = '621661'
break
case '0303':
prefix = '622666'
break
case '305':
prefix = '622622'
break
case '0306':
prefix = '622556'
break
case '0308':
prefix = '622588'
break
case '0410':
prefix = '622155'
break
case '302':
prefix = '622689'
break
case '304':
prefix = '622630'
break
case '309':
prefix = '622908'
break
case '310':
prefix = '621717'
break
case '315':
prefix = '622323'
break
case '316':
prefix = '622309'
break
default:
}
for (var j = 0; j < 12; j++) {
prefix = prefix + Math.floor(Math.random() * 10)
}
return prefix
}
mockOrderNo
用法
mockOrderNo()
返回
随机返回一个订单编号
参考代码
/**
* 随机生成18位不重复的订单编号
* length 随机后缀字符长度,默认为4
*/
function mockOrderNo() {
var now = new Date()
var year = now.getFullYear().toString()
var month = (now.getMonth() + 1)
var day = now.getDate()
var hour = now.getHours()
var minutes = now.getMinutes()
var seconds = now.getSeconds()
length = 4
// 个位数补齐十位数
month = month < 10 ? '0' + month : month
day = day < 10 ? '0' + day : day
hour = hour < 10 ? '0' + hour : hour
minutes = minutes < 10 ? '0' + minutes : minutes
seconds = seconds < 10 ? '0' + seconds : seconds
month = month.toString()
day = day.toString()
hour = hour.toString()
minutes = minutes.toString()
seconds = seconds.toString()
// 存放订单号
var num = ''
// N位随机数(加在时间戳后面)
for (var i = 0; i < length; i++) {
num += Math.floor(Math.random() * 10)
}
return (year + month + day + hour + minutes + seconds + num)
}
mockIDCard
用法
mockIDCard()
返回
随机返回一个身份证号
参考代码
function mockIDCard(){
var coefficientArray = ["7","9","10","5","8","4","2","1","6","3","7","9","10","5","8","4","2"];// 加权因子
var lastNumberArray = ["1","0","X","9","8","7","6","5","4","3","2"];// 校验码
var address = "420101"; // 住址
var birthday = "19810101"; // 生日
var s = Math.floor(Math.random()*10).toString() + Math.floor(Math.random()*10).toString() + Math.floor(Math.random()*10).toString();
var array = (address + birthday + s).split("");
var total = 0;
for (var i;i < array.length;i++) {
total = total + parseInt(array[i])*parseInt(coefficientArray[i]);
}
var lastNumber = lastNumberArray[parseInt(total%11)];
var id_card_String = address + birthday + s + lastNumber;
return id_card_String
}
mockMobile
用法
mockMobile()
返回
随机返回一个手机号
参考代码
function mockMobile() {
var prefixArray = new Array("130", "131", "132", "133", "135", "137", "138", "170", "187", "189");
var i = parseInt(10 * Math.random());
var prefix = prefixArray[i];
for (var j = 0; j < 8; j++) {
prefix = prefix + Math.floor(Math.random() * 10);
}
return prefix
}
token
API交互中如需token认证,可以定义在脚本库中,如定义脚本库名:myToken,代码如下:
以下是代码块的方式定义脚本库,也可以写成一个函数
//浏览器中找到token值,在此定义。token失效需要更新
token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.YiOjE2OTk4NjQwOTcsImV4cCI6MTcwMDQ2ODg5NywidG9rZW5Eie1widXNlcklkXCI6NTc0NDE3MjgwMTI4MTIyOTAsXCJ1c2VybmFtZVwiOlwicWlqdW4uaG91XCIsXCJ0ZW5hbnRJZFwiOjU3NDQxNzI4MDEjkxLFwidG9rZW5FeHBpcmF0aW9uTWludXRlc1wiOjEwMDgwfSIsImlhdCI6MTY5OTg2NDA5N30.EA36kiZBlUeK2p4-0iVTkDu06uhVjjzPWFt-BAJi3sY";
headerData={"Content-Type":"application/json","Jifrog-Token":token}//token名称请更换为需要登录的系统给出的token名称
setJson("header",headerData);//设置token
在流程定义中可以定义一个自动化节点,名称为登录,即可完成认证,规则脚本如下;
import("myToken")
true