当前位置:首页 > PHP教程 > php函数 > 列表

测试php函数的方法

发布:smiling 来源: PHP粉丝网  添加日期:2020-06-28 16:12:06 浏览: 评论:0 

本文提供的方法是用于测试php函数的代码,今天忽然想到的,就写了一段测试php函数的代码,代码如下:

  1. <?php 
  2. /** 
  3.  * 参数数组$ParamList说明 
  4.  * 
  5.  * 数组的第一维索引是需要测试的函数的参数名,第二维的每个元素是该参数需要测试的可能值,元素值可以为数组。 
  6.  */ 
  7. $ParamList = array("Param1" => array(3,4,3,2,1), 
  8.                    "Param2" => array(3,2,5), 
  9.                    "Param3" => array(0,0.5,1,1.5)); 
  10. // 测试函数 
  11. sysTestFunction("Test"$ParamList); 
  12.  
  13. // 待测试的函数 
  14. function Test($Param1$Param2$Param3
  15.     return $Param1 . "|" . $Param2 . "|" . $Param3
  16.  
  17. /** 
  18.  * 自动测试 
  19.  * 
  20.  * @param  string  $FunctionName  函数名称 
  21.  * @param  array   $ParamList     参数列表 
  22.  * @return array 
  23.  */ 
  24. function sysTestFunction($FunctionName$ParamList
  25.     if(emptyempty($FunctionName)) 
  26.     { 
  27.         echo "函数名不能为空"
  28.         return false; 
  29.     } 
  30.     if(!is_array(current($ParamList))) 
  31.     { 
  32.         echo "参数不是2维数组"
  33.         return false; 
  34.     } 
  35.     $TestParamList = sysCombineArray($ParamList); 
  36.     echo "开始测试函数" . $FunctionName . "<br />"
  37.     foreach($TestParamList as $Key => $TestParamInfo
  38.     { 
  39.         echo "开始测试第" . $Key . "组参数:<br />"
  40.         foreach($TestParamInfo as $ParamKey => $Param
  41.         { 
  42.             ${"Param" . $ParamKey} = $Param
  43.             $TempParamList[] = "$Param" . $ParamKey
  44.             if(is_array($Param)) 
  45.             { 
  46.                 echo "参数" . $ParamKey . ",类型为数组:"
  47.                 echo "<pre>"
  48.                 print_r($Param); 
  49.             } 
  50.             elseif(is_bool($Param)) 
  51.             { 
  52.                 echo "参数" . $ParamKey . ",类型为boll:"
  53.                 if($Param
  54.                 { 
  55.                     echo "true"
  56.                 } 
  57.                 else 
  58.                 { 
  59.                     echo "false"
  60.                 } 
  61.             } 
  62.             else 
  63.             { 
  64.                 echo "参数" . $ParamKey . ",类型为字符串或数字:"
  65.                 echo $Param
  66.             } 
  67.             echo "<br />"
  68.         } 
  69.         $Params = join(", "$TempParamList); 
  70.         unset($TempParamList); 
  71.         eval("$TestReturnResult = " . $FunctionName . "(" . $Params . ");"); 
  72.         if(is_array($TestReturnResult)) 
  73.         { 
  74.             echo "函数返回数组:<pre>"
  75.             print_r($TestReturnResult); 
  76.         } 
  77.         elseif(is_bool($TestReturnResult)) 
  78.         { 
  79.             if($TestReturnResult
  80.             { 
  81.                 echo "函数返回true"
  82.             } 
  83.             else 
  84.             { 
  85.                 echo "函数返回false"
  86.             } 
  87.         } 
  88.         else 
  89.         { 
  90.             echo "函数返回数字或字符串:" . $TestReturnResult
  91.         } 
  92.         echo "<br /><br />"
  93.     } 
  94. /** 
  95.  * 计算组合的函数 
  96.  * 
  97.  * @param  array $CombinList 待排列组合的2维数组 
  98.  * @return array             组合后的数组 
  99.  */ 
  100. function sysCombineArray($CombinList
  101.     if(!is_array(current($CombinList))) 
  102.     { 
  103.         echo "参数不是2维数组"
  104.         return false; 
  105.     } 
  106.     /* 计算C(a,1) * C(b, 1) * ... * C(n, 1)的值 */ 
  107.     $CombineCount = 1; 
  108.     foreach($CombinList as $Key => $Value
  109.     { 
  110.         $CombineCount *= count($Value); 
  111.     } 
  112.     $RepeatTime = $CombineCount
  113.     foreach($CombinList as $ClassNo => $ParamList
  114.     { 
  115.         // $ParamList中的元素在拆分成组合后纵向出现的最大重复次数 
  116.         $RepeatTime = $RepeatTime / count($ParamList); 
  117.         $StartPosition = 1; 
  118.         foreach($ParamList as $Param
  119.         { 
  120.             $TempStartPosition = $StartPosition
  121.             $SpaceCount = $CombineCount / count($ParamList) / $RepeatTime
  122.             for($J = 1; $J <= $SpaceCount$J ++) 
  123.             { 
  124.                 for($I = 0; $I < $RepeatTime$I ++) 
  125.                 { 
  126.                    $Result[$TempStartPosition + $I][$ClassNo] = $Param
  127.                 } //phpfensi.com 
  128.                 $TempStartPosition += $RepeatTime * count($ParamList); 
  129.             } 
  130.             $StartPosition += $RepeatTime
  131.         } 
  132.     } 
  133.     return $Result
  134. ?> 

Tags: 测试php函数的方法

分享到: