欢迎光临
我们一直在努力

用于测试php函数的代码-PHP教程,PHP应用

建站超值云服务器,限时71元/月


今天忽然想到的,就写了一段测试php函数的代码。

<?php

/**
 * 参数数组$paramlist说明
 *
 * 数组的第一维索引是需要测试的函数的参数名,第二维的每个元素是该参数需要测试的可能值,元素值可以为数组。
 */

$paramlist = array(“param1” => array(3,4,3,2,1),
                   “param2” => array(3,2,5),
                   “param3” => array(0,0.5,1,1.5));

// 测试函数
systestfunction(“test”, $paramlist);

// 待测试的函数
function test($param1, $param2, $param3)
{
    return $param1 . “|” . $param2 . “|” . $param3;
}

/**
 * 自动测试
 *
 * @author         李玉鹏<leeyupeng@163.com>
 * @param  string  $functionname  函数名称
 * @param  array   $paramlist     参数列表
 * @return array
 */
function systestfunction($functionname, $paramlist)
{
    if(empty($functionname))
    {
        echo “函数名不能为空”;
        return false;
    }

    if(!is_array(current($paramlist)))
    {
        echo “参数不是2维数组”;
        return false;
    }

    $testparamlist = syscombinearray($paramlist);

    echo “开始测试函数” . $functionname . “<br />”;
    foreach($testparamlist as $key => $testparaminfo)
    {
        echo “开始测试第” . $key . “组参数:<br />”;

        foreach($testparaminfo as $paramkey => $param)
        {
            ${“param” . $paramkey} = $param;
            $tempparamlist[] = “$param” . $paramkey;
            if(is_array($param))
            {
                echo “参数” . $paramkey . “,类型为数组:”;
                echo “<pre>”;
                print_r($param);
            }
            elseif(is_bool($param))
            {
                echo “参数” . $paramkey . “,类型为boll:”;
                if($param)
                {
                    echo “true”;
                }
                else
                {
                    echo “false”;
                }
            }
            else
            {
                echo “参数” . $paramkey . “,类型为字符串或数字:”;
                echo $param;
            }
            echo “<br />”;
        }

        $params = join(“, “, $tempparamlist);
        unset($tempparamlist);

        eval(“$testreturnresult = ” . $functionname . “(” . $params . “);”);
        if(is_array($testreturnresult))
        {
            echo “函数返回数组:<pre>”;
            print_r($testreturnresult);
        }
        elseif(is_bool($testreturnresult))
        {
            if($testreturnresult)
            {
                echo “函数返回true”;
            }
            else
            {
                echo “函数返回false”;
            }
        }
        else
        {
            echo “函数返回数字或字符串:” . $testreturnresult;
        }
        echo “<br /><br />”;
    }
}

/**
 * 计算组合的函数
 *
 * @author                   李玉鹏<leeyupeng@163.com>
 * @param  array $combinlist 待排列组合的2维数组
 * @return array             组合后的数组
 */
function syscombinearray($combinlist)
{
    if(!is_array(current($combinlist)))
    {
        echo “参数不是2维数组”;
        return false;
    }

    /* 计算c(a,1) * c(b, 1) * … * c(n, 1)的值 */
    $combinecount = 1;
    foreach($combinlist as $key => $value)
    {
        $combinecount *= count($value);
    }

    $repeattime = $combinecount;
    foreach($combinlist as $classno => $paramlist)
    {
        // $paramlist中的元素在拆分成组合后纵向出现的最大重复次数
        $repeattime = $repeattime / count($paramlist);

        $startposition = 1;

        foreach($paramlist as $param)
        {
            $tempstartposition = $startposition;

            $spacecount = $combinecount / count($paramlist) / $repeattime;

            for($j = 1; $j <= $spacecount; $j ++)
            {
                for($i = 0; $i < $repeattime; $i ++)
                {
                   $result[$tempstartposition + $i][$classno] = $param;
                }
                $tempstartposition += $repeattime * count($paramlist);
            }
            $startposition += $repeattime;
        }
    }

    return $result;
}
?>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 用于测试php函数的代码-PHP教程,PHP应用
分享到: 更多 (0)