用于测试php函数的代码

函数


今天忽然想到的,就写了一段测试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;
}
?>

时间: 2024-08-29 08:08:13

用于测试php函数的代码的相关文章

测试php函数的代码

今天忽然想到的,就写了一段测试php函数的代码 <?php /** * 参数数组$ParamList说明 * * 数组的第一维索引是需要测试的函数的参数名,第二维的每个元素是该参数需要测试的可能值,元素值可以为数组. */ $ParamList = array("Param1" => array(3,4,3,2,1), "Param2" => array(3,2,5), "Param3" => array(0,0.5,1,

测试php函数的方法_php实例

今天忽然想到的,就写了一段测试php函数的代码. 复制代码 代码如下: <?php/** * 参数数组$ParamList说明 * * 数组的第一维索引是需要测试的函数的参数名,第二维的每个元素是该参数需要测试的可能值,元素值可以为数组. */$ParamList = array("Param1" => array(3,4,3,2,1),                   "Param2" => array(3,2,5),            

python实现用于测试网站访问速率的方法

  这是python编写的用于测试网站访问速率的代码片段,可以输出打开某url的时间,访问100次的平均时间,最大时间和最小时间等等 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import urllib2 from datetime import * import time def Process(url,n): minSpan = 10.0 maxSpan = 0.0 sumS

python-Python针对项目 测试瓶颈函数信息

问题描述 Python针对项目 测试瓶颈函数信息 请教一下 Python对于一个比较大的项目有什么比较好的方案可以测试出项目中存在的瓶颈函数? 具体来说:平时自己写的脚本利用Cprofile,profile模块就可以导出瓶颈模块,但是感觉对项目来说这种方法有点低效,想请教针对大的项目而言有没有更好的工具和测试方法来导出瓶颈模块信息? 解决方案 首先 你要先自身优化你自己的代码 其次才是测试的问题 下面这个链接说的很到位 http://blog.csdn.net/gzlaiyonghao/arti

测试JavaScript函数的性能

在软件中,性能一直扮演着重要的角色.在Web应用中,性能变得更加重要,因为如果页面速度很慢的话,用户就会很容易转去访问我们的竞争对手的网站.作为专业的web开发人员,我们必须要考虑这个问题.有很多"古老"的关于性能优化的最佳实践在今天依然可行,例如最小化请求数目,使用CDN以及不编写阻塞页面渲染的代码.然而,随着越来越多的web应用都在使用JavaScript,确保我们的代码运行的很快就变得很重要. 假设你有一个正在工作的函数,但是你怀疑它运行得没有期望的那样快,并且你有一个改善它性能

一步步教你编写可测试的Go语言代码_Golang

第一个测试 "Hello Test!" 首先,在我们$GOPATH/src目录下创建hello目录,作为本文涉及到的所有示例代码的根目录. 然后,新建名为hello.go的文件,定义一个函数hello() ,功能是返回一个由若干单词拼接成句子: package hello func hello() string { words := []string{"hello", "func", "in", "package&q

数据库函数代码管理 - 自动备份函数\过程代码到SVN\github\gitlab

标签 PostgreSQL , 存储过程 , plpgsql , plpython , pljava , svn , github , 版本管理 背景 市面上有很多代码的版本管理软件,比如gitlab, github, svn等等. 商业数据库的编程能力较强,比如Oracle的PL/SQL,很多传统企业会将对一致性.可靠性要求非常高的业务逻辑放到数据库中,这就造成了数据库内不仅仅存储数据,也存储了部分业务代码. PostgreSQL 作为开源界最高级的开源数据库,同样支持强大的函数语言plpgs

mysql count详解及函数实例代码

mysql count详解 count函数是用来统计表中或数组中记录的一个函数,下面我来介绍在mysql中count函数用法. count(*) 它返回检索行的数目, 不论其是否包含 NULL值. SELECT 从一个表中检索,而不检索其它的列,并且没有 WHERE子句时, COUNT(*)被优化到最快的返回速度. 例如: mysql> SELECT COUNT(*) FROM student; COUNT(DISTINCT 字段)这个优化仅适用于 MyISAM表, 原因是这些表类型会储存一个函

回车键调用-这个按Enter调用函数的代码为什么在猎豹上不执行?而且在ie上执行的也不正常

问题描述 这个按Enter调用函数的代码为什么在猎豹上不执行?而且在ie上执行的也不正常 <!DOCTYPE html> Document<br> function leyLogin(){<br> if(event.keyCode==13){<br> document.getElementById("input1").click();<br> }<br> }<br> 解决方案 放chrome上执行试试