PHP的自动化测试工具

最近一直没怎么更新博客,因为有一个很蛋疼的任务没完成。

就是做一个自动化测试工具。这工具分为单例测试和批量测试(PS:PHP程序员也开始跟测试抢饭碗了)

PS:这里说一句题外话,在项目动手之前,一定要把需求弄清楚,不然你就会像我一样,要返工N次,还不能抱怨

做接口测试,首先你要先理解两个知识点:

  1. PHP的反射(反射是PHP的一个高级应用,如果你不知道的话,那工具开发就无从下手了)
  2. CURL扩展的使用

下面分步来说明这两个小玩意多是啥?

PHP的反射(一听就知道是一个高端大气上档次的东西,因为以前都没听说过)

反射有什么用?为什么要学反射?反射的原理是什么?这一大堆因为肯定让第一次接触的你很纠结。

PHP中反射方法是Reflection。然后它的作用就是让类里面的结构明显。

这样你肯定不是很理解。我们来一个实现吧


class mysql{

public  function a(){

print_r("php中级工程师");

/**

     这是一个PHP打印方法

@param string $name //输入用户名称

@param int $age //年龄

**/

private function b($name,$age)

{

echo  "你是猴子请来的逗比嘛";

}

  }
}


看完上面这个MYSQL类,如果你之前看过PHP的面向对象编程,你肯定知道,如果我实例化了MYSQL这个方法,我一定可以在外部调用a() ,而不是很调用B()。

简单的理解是A()方法是可见的而B()是不可见的。

这是面向对象编程的一个核心:封装(PS :面向对象有三个基本核心)

但反射可以打破这个封装


Reflection::export(new Reflection(new mysql));

你可以很清楚的看到这个Mysql类的全部内容,包括注释。(PS:不要以为在外部看的见,你就用通过实例化类操作private的方法)

然后,reflection这个扩展还提供很多其他的功能,请自行查看手册。

然后是就是CURL这扩展来调用PHP的接口做数据测试了。

CURL是可以发送COOKIES来模拟游览器登录的,但你要注意如果你在一个PHP程序中再使用CURL后台请求页面,这个两次请求是不同的进程,不能共用cookies的。

然后到底怎么用CURL呢?下面代码经供参考

$cookie_file = dirname(__FILE__).'/cookie.txt';
//先获取cookies并保存
$url = "http://www.google.com.hk";
$ch = curl_init($url); //初始化
curl_setopt($ch, CURLOPT_HEADER, 0); //不返回header部分
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //返回字符串,而非直接输出
curl_setopt($ch, CURLOPT_COOKIEJAR,  $cookie_file); //存储cookies
echo curl_exec($ch);
curl_close($ch);

运行上面的代码,你可以在你在你当前目录下看到一个COOKIES.tXt 的文件。然后再用CURl请求其他的页面就可以。

如果你要远程登录表达,上面这个方法也行可以帮到你。

上面说的两个知识点你是不是都清楚了。

用PHP做测试工具,是不是一下就感觉自己不是一个单单的做网站的呢?

反射的用法最广泛的用法就是插件模式中的钩子。什么你不知道什么是钩子?wordpress插件怎么样。

了解反射可以让你开始的理解wordpress的插件实现机制。不信?哈哈,至于你信不信,至少我信了。

等会,这自动化工具,我打算开源出来,先给我点时间把代码完善一下。

1 thought on “PHP的自动化测试工具

发表评论

电子邮件地址不会被公开。 必填项已用*标注

(Spamcheck Enabled)