51Testing软件测试论坛

标题: 使用Postman工具做接口测试之生成随机参数 [打印本页]

作者: lsekfe    时间: 2022-1-6 13:17
标题: 使用Postman工具做接口测试之生成随机参数
 引言
  我们平时使用最多的接口调试工具就是postman了,比如开发将一个接口给到你,你想看看接口是否正常。最常用的方法就是用postman去调一下。如果通,就写接口测试用例,反之,将开发打一顿吧o(* ̄︶ ̄*)o。
  我们测试接口时,避免不了重复调用一个接口,这样的话,需要随机数来参数化关键的业务字段。
  Postman三种内置随机数
  其实postman还有其他内置随机数,这里介绍postman三种随机数,打开postman,输入{{,可以看到,如图:
[attach]136069[/attach]

随机数如下:
  {{$guid}}:添加一个V4风格GUID(如: aa002-44ac-45ca-aae3-52bf19650e2d)
  {{$timestamp}}:将当前的时间戳,精确到秒
  {{$randomInt}}:添加0和1000之间的随机整数
  我们分别在postman中使用,如下:
[attach]136070[/attach]
是不是挺好用,这样我们就可以用它来参数化了,重复调用接口也不会导致报文中数据重复使用同一份数据。
  但是,如果我想要生成6位,10位随机整数呢? 要怎么做?
  这个时候需要自定义随机数。
  Postman自定义随机函数
  自定义随机整数
  代码如下:
  第一种:
  1. // 结果为0-1间的一个随机数(包括0,不包括1)
  2.   var randomNum1 = Math.random();
  3.   console.log(randomNum1);
复制代码
[attach]136071[/attach]
第二种:
  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);
复制代码
[attach]136072[/attach]
第三种:

  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));
复制代码
[attach]136073[/attach]

第四种:这种就有可能第一位是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);
复制代码
[attach]136074[/attach]

上面都是生成自定义位数的随机数,你可以根据需要传入参数来决定几位。
  自定义随机时间
  通常情况下,很多接口使用的是时间戳,其实我们也可以用这个来做随机数参数化,如图:
  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 位
复制代码
[attach]136075[/attach]

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

  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)
复制代码
[attach]136076[/attach]

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);
复制代码
运行结果:
[attach]136077[/attach]
时间参数化:
  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);
复制代码
运行结果如图:
[attach]136078[/attach]
总结
  以上就是我们在使用postman做接口测试时,经常使用的随机数作为参数化的例子。希望可以帮助到你。










欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2