51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1038|回复: 0
打印 上一主题 下一主题

[转贴] 使用Postman工具做接口测试之生成随机参数

[复制链接]
  • TA的每日心情
    擦汗
    12 小时前
  • 签到天数: 1048 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2022-1-6 13:17:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     引言
      我们平时使用最多的接口调试工具就是postman了,比如开发将一个接口给到你,你想看看接口是否正常。最常用的方法就是用postman去调一下。如果通,就写接口测试用例,反之,将开发打一顿吧o(* ̄︶ ̄*)o。
      我们测试接口时,避免不了重复调用一个接口,这样的话,需要随机数来参数化关键的业务字段。
      Postman三种内置随机数
      其实postman还有其他内置随机数,这里介绍postman三种随机数,打开postman,输入{{,可以看到,如图:


    随机数如下:
      {{$guid}}:添加一个V4风格GUID(如: aa002-44ac-45ca-aae3-52bf19650e2d)
      {{$timestamp}}:将当前的时间戳,精确到秒
      {{$randomInt}}:添加0和1000之间的随机整数
      我们分别在postman中使用,如下:

    是不是挺好用,这样我们就可以用它来参数化了,重复调用接口也不会导致报文中数据重复使用同一份数据。
      但是,如果我想要生成6位,10位随机整数呢? 要怎么做?
      这个时候需要自定义随机数。
      Postman自定义随机函数
      自定义随机整数
      代码如下:
      第一种:
    1. // 结果为0-1间的一个随机数(包括0,不包括1)
    2.   var randomNum1 = Math.random();
    3.   console.log(randomNum1);
    复制代码

    第二种:
    1.  // 获取最小值到最大值之前的整数随机数
    2.   function GetRandomNum(Min, Max) {
    3.       var Range = Max - Min;
    4.       var Rand = Math.random();
    5.       return(Min + Math.round(Rand * Range));
    6.   }
    7.   var num = GetRandomNum(100000, 999999);
    8.   console.log(num);
    复制代码

    第三种:

    1.  /**
    2.   * 产生随机整数,包含下限值,但不包括上限值
    3.   * @param {Number} lower 下限
    4.   * @param {Number} upper 上限
    5.   * [url=home.php?mod=space&uid=26358]@return[/url] {Number} 返回在下限到上限之间的一个随机整数
    6.   */
    7.   function random(lower, upper) {
    8.   return Math.floor(Math.random() * (upper - lower)) + lower;
    9.   }
    10.   
    11.   console.log(random(100000,999999));
    复制代码


    第四种:这种就有可能第一位是0

    1. var Num="";
    2.   
    3.   for ( var i=0;i<10; i++ )
    4.   
    5.   {
    6.   
    7.   Num += Math.floor(Math.random() * 10);
    8.   
    9.   }
    10.   
    11.   
    12.   console.log(Num);
    复制代码


    上面都是生成自定义位数的随机数,你可以根据需要传入参数来决定几位。
      自定义随机时间
      通常情况下,很多接口使用的是时间戳,其实我们也可以用这个来做随机数参数化,如图:
    1.  //十三位毫秒时间戳
    2.   let a = Date.now();
    3.   console.log(a);
    4.   //十三位毫秒时间戳
    5.   b = new  Date().getTime();
    6.   console.log(b)
    7.   
    8.   //十位秒时间戳
    9.   let c = Date.now()/1000;
    10.   console.log(c.toString().substring(0,10)); //截取第 0~9 位
    11.   console.log(parseInt(c))
    12.   
    13.   // 将 13 位时间戳除以 1000 然后再取整,得到 10 位时间戳数字
    14.   parseInt(+new Date()/1000);
    15.   
    16.   // 将 13 位时间戳转换为字符串截取前 10 位,得到 10 位时间戳字符串
    17.   (+new Date()).toString().substring(0,10); // 截取第 0~9 位
    18.   (+new Date()).toString().substr(0,10);    // 从第 0 位开始截取 10 位
    复制代码


    如果我们想使用具体时间作为随机参数,例如,获取当前年月日时分秒,可以这样,如图:

    1. a = (new Date()).Format("yyyy-MM-dd hh:mm:ss.S")
    2.   b = (new Date()).Format("yyyy-M-d h:m:s.S")
    3.   console.log(a)
    4.   console.log(b)
    5.   
    6.   
    7.   c = (new Date()).Format("yyyyMdhms")
    8.   d = (new Date()).Format("yyyyMMddhhmmss")
    9.   console.log(c)
    10.   console.log(d)
    复制代码


    Postman实操
      结合上面的例子,我们在postman中使用如下:
    1. function random(lower, upper) {
    2.   return Math.floor(Math.random() * (upper - lower)) + lower;
    3.   }
    4.   
    5.   var nums = random(100000,999999)
    6.   console.log(nums);
    7.   
    8.   pm.environment.set('nums',nums);
    9.   
    10.   console.log(nums);
    复制代码
    运行结果:

    时间参数化:
    1.  # 方法1
    2.   var myDate=new Date();
    3.   var year = myDate.getFullYear();
    4.   var month = myDate.getMonth() + 1;
    5.   var date = myDate.getDate();
    6.   var hours = myDate.getHours() + 1;
    7.   var min = myDate.getMinutes();
    8.   var seconds = myDate.getSeconds();
    9.   hours = hours < 10 ? "0" + hours : hours;
    10.   min = min < 10 ? "0" + min : min;
    11.   seconds = seconds < 10 ? "0" + seconds : seconds;
    12.   var date = year + "" + month + date + hours + min + seconds;
    13.   console.log(date,"测试");
    14.   
    15.   #方法2
    16.   var moment = require('moment');
    17.   var data = moment().format(" YYYYMMDDHHmmss");
    18.   console.log(data);
    19.   pm.globals.set("time", data);
    复制代码
    运行结果如图:

    总结
      以上就是我们在使用postman做接口测试时,经常使用的随机数作为参数化的例子。希望可以帮助到你。





    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-18 21:47 , Processed in 0.068498 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表