技术开发 频道

软件测试中通用数据生成方法

  代码实现

  第一步:解析 ini 文件

  error_reporting(0);

  $iniFile = $argv[1]; // 第一个参数为配置文件。

  $dataCount = $argv[2]; // 第二个参数为要生成的记录数。

  $fields = parse_ini_file($iniFile, true); // 将 ini 配置文件转换为一个数组。

  第二步:生成每一个字段的取值列表

  foreach($fields as $fieldName => $field)

  {

  $list = array();

  $equalPos = strpos($field['datatype'], '='); // 取得等号的为止。 range=[]

  $range = substr($field['datatype'], $equalPos + 2, -1); // 取得 range 的列表(去掉了 [])

  $items = explode(',', $range); // 得到所有的 item 元素。

  /* 循环处理每一个 item,如果是一个区间,则调用 range 函数。 */

  foreach($items as $item)

  {

  if(strpos($item, '-'))

  {

  list($min, $max) = explode('-', $item);

  $list = array_merge($list, range($min, $max)); // 追加到 field 的 list 列表中。

  }

  else

  {

  $list[] = $item;

  }

  }

  $field['list'] = $list; // 将最终的 list 列表赋值给 field 。

  $field['pointer'] = 0; // 初始化这个列表的指针。

  $fields[$fieldName] = $field; // 写回整个 fields 数组。

  }

  第三步:循环输出数据

  /* 循环输出数据。 */

  for($i = 0; $i < $dataCount; $i ++)

  {

  foreach($fields as $fieldName => $field)

  {

  $pointer = $field['pointer'];

  /* 如果指针已经到到了列表的尾部,重新指向列表开始。 */

  if($pointer == count($field['list'])) $pointer = 0;

  echo $field['prefix']; // 输出前缀。

  echo $field['list'][$pointer]; // 输出当前指针所对应的列表中的取值。

  echo $field['postfix']; // 输出后缀。

  $pointer ++;

  $fields[$fieldName]['pointer'] = $pointer;

  }

  echo "\n";

  }

  这样我们用了不到 50 行的代码就完成了一个基本的数据生成工具。这其实已经可以满足基本的数据生成任务了。但是还需要进一步进行完善。

0
相关文章