程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP基礎知識 >> PHP的自動化測試工具使用教程

PHP的自動化測試工具使用教程

編輯: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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved