测试php函数的方法


Posted in PHP onNovember 13, 2013

今天忽然想到的,就写了一段测试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;
}
/**
 * 自动测试
 *
 * @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 />";
    }
}
/**
 * 计算组合的函数
 *
 * @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;
}
?>
PHP 相关文章推荐
用PHP和ACCESS写聊天室(八)
Oct 09 PHP
粗略计算在线时间,bug:ip相同
Dec 09 PHP
Uchome1.2 1.5 代码学习 common.php
Apr 24 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
php使用google地图应用实例
Dec 31 PHP
php生成固定长度纯数字编码的方法
Jul 09 PHP
给PHP开发者的编程指南 第一部分降低复杂程度
Jan 18 PHP
基于PHP实现数据分页显示功能
May 26 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 PHP
laravel实现登录时监听事件,添加登录用户的记录方法
Sep 30 PHP
PHP查找一列有序数组是否包含某值的方法
Feb 07 PHP
PHP中判断变量为空的几种方法小结
Nov 12 #PHP
php不允许用户提交空表单(php空值判断)
Nov 12 #PHP
php5.3 不支持 session_register() 此函数已启用的解决方法
Nov 12 #PHP
session在php5.3中的变化 session_is_registered() is deprecated in
Nov 12 #PHP
PHP使用正则表达式清除超链接文本
Nov 12 #PHP
PHP统计二维数组元素个数的方法
Nov 12 #PHP
多个PHP中文字符串截取函数
Nov 12 #PHP
You might like
PHP读取目录下所有文件的代码
2008/01/07 PHP
PHP 获取客户端真实IP地址多种方法小结
2010/05/15 PHP
php图像处理函数大全(推荐收藏)
2013/07/11 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
php商品对比功能代码分享
2015/09/24 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
理解javascript中的MVC模式
2016/01/28 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
jQuery UI仿淘宝搜索下拉列表功能
2017/01/10 Javascript
AngularJS Toaster使用详解
2017/02/24 Javascript
详解Vue使用 vue-cli 搭建项目
2017/04/20 Javascript
Vue中render函数的使用方法
2018/01/31 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
Python中给List添加元素的4种方法分享
2014/11/28 Python
python获取图片颜色信息的方法
2015/03/18 Python
十分钟利用Python制作属于你自己的个性logo
2018/05/07 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python七夕浪漫表白源码
2019/04/05 Python
Python实现序列化及csv文件读取
2020/01/19 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
Expedia马来西亚旅游网站:廉价酒店,度假村和航班预订
2016/07/26 全球购物
有机童装:Toby Tiger
2018/05/23 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
LivingSocial英国:英国本地优惠
2019/02/22 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
管理科学大学生求职信
2013/11/13 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
贫困证明书范文
2015/06/16 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
Ruby使用Mysql2连接操作MySQL
2022/04/19 Ruby