最近一直沒怎麼更新博客,因為有一個很蛋疼的任務沒完成。
就是做一個自動化測試工具。這工具分為單例測試和批量測試(PS:PHP程序員也開始跟測試搶飯碗了)
PS:這裡說一句題外話,在項目動手之前,一定要把需求弄清楚,不然你就會像我一樣,要返工N次,還不能抱怨
做接口測試,首先你要先理解兩個知識點:
下面分步來說明這兩個小玩意多是啥?
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的插件實現機制。不信?哈哈,至於你信不信,至少我信了。
等會,這自動化工具,我打算開源出來,先給我點時間把代碼完善一下。