• [Jmeter]给设备批量添加国标编码+(坑)当数字前面出现0的时候很容易出错,会被误认为8进制


    一、需求:假设有10w的设备,每个设备都需要20位编码,分为三部分组成:前10位+中间3位+后7位;要求:

    1、10w个编码前10位可以一致,但允许用户自定义;

    2、中间三位同上;

    3、后7位任意数字;

    4、但是这10W个编码不能重复,必须唯一。

    二、利用Jmeter实现

    2.1 用户自定义参数元件:三个参数:前10位;中间3位;需要生成的编码数量;

    2.2 配置数据库连接,同时记得导入数据库连接依赖包

     

     2.3 从数据库中取出所有的设备id

     

     2.4 使用beanshell,拼接前13位,顺带获取设备个数

    cameraidscount = vars.getObject("cameraidObj").size(); //获取数据长度
    vars.put("cameraidsnum",cameraidscount.toString()); //查看数据长度
    log.info(cameraidscount.toString());   //测试
    
    var precoding = vars.get("precoding");   //前10位
    var mediumcoding = vars.get("mediumcoding");//中间三位
    vars.put("preGBNUM",precoding+mediumcoding);    //拼接生成前13位国标编码
    //log.info(vars.get("preGBNUM"));   //测试

     2.5 用一个循环控制器,循环次数以取出的设备个数为准(如果并不想给数据库里所有设备赋予国标编码,循环次数可以是用户参数里面设置的testnum,自定义想要生成的编码数)

    2.6 循环里用个计数器,用来创建后7位编码

    2.7 然后用beanshell将前13位和后7位拼接起来,从设备id列表里取出第x个id

    //var cameraids = vars.getObject("cameraidObj");
    
    var numx = "${counter}";  //获取循环第x次
    //log.info(numx.toString());   //测试
    
    
    vars.put("GBNUM",vars.get("preGBNUM")+vars.get("counter").toString());    //拼接生成第X个国标编码
    //log.info(vars.get("GBNUM"));   //测试
    
    
    var camera = vars.getObject("cameraidObj").get(Integer.parseInt(numx)); //取出第X个{camera_id:id}
    //log.info(numx.toString());   //测试
    vars.put("cameraid",camera.get("camera_id").toString());//从{camera_id:id}中取出id
    //log.info(camera.get("camera_id"));   //测试

    注意:这里有个地方容易出错,当数字前面出现0的时候很容易出错,会被误认为8进制,所以不能写成var numx = ${counter};01—07时都是正常的,但是在”08”,”09”就会返回0,所以要变成字符串传值

    2.8 将当前拼接好的20位编码通过数据库请求写入到当前获取到的设备id

     2.9 剩下的就是用debugsample、查看结果树、聚合报告调试了

  • 相关阅读:
    [MySQL] MySQL连接字符串总结[转]
    JavaScript删除字符串中的空格
    日期正则表达式[转]
    WIN7拥有管理员权限的使用方法
    SQLWave. GUI Client for MySQL Database Server
    Windows下MySQL多实例运行[转]
    Facebook 的 PHP 性能与扩展性[转]
    改变Datalist行背景色
    Excel导入数据库
    c#创建Table
  • 原文地址:https://www.cnblogs.com/cyanlee/p/12403390.html
Copyright © 2020-2023  润新知