脚本库

脚本库是一个函数的集合,用来集中定义和管理公用、通用函数,从菜单流程管理->脚本库进入定义。脚本库不能在浏览器节点中应用。

脚本库调试,不支持部分内置函数,因为不能获取实例上下文参数,运行环境可支持。

包管理

定义脚本库前需要定义脚本库的包,这里的包就是一个分类,如我们把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