查了不少資料,看起來都是指向Selenium,另外有Behavior,但看來是給Python用,不知道還有沒有其他的,不過也不想再花時間找了,這邊一樣以WordPress當例子,但只會介紹到環境建好,剩下的就像是在開發WordPress的流程,就由看倌再自己找囉~
開始之前可以先看看這影片How to Use Selenium 2 With PHPUnit。
Step1 安裝Selenium2 Server及phpunit/PHPUnit_Selenium套件
到http://phpunit.de/manual/3.7/en/selenium.html可以找到下載點,如下:點選"Selenium Server"後,再點選紅框部分,就可以取得jar檔。
執行底下指令將jar檔移到/usr/local及啟動(PS. 在影片中是移到/usr/local/bin,但在mac中,那邊是只有root可以執行的,有點麻煩)
$ sudo mv selenium-server-standalone-2.39.0.jar /usr/local $ java -jar /usr/local/selenium-server-standalone-2.39.0.jar
接下安裝phpunit/PHPUnit_Selenium,若沒有裝過PHPUnit可以參考PHPUnit學習筆記-PHPUnit安裝(使用PEAR),另外文中提及安裝PHPUnit_Selenium,指令如下
$sudo pear install phpunit/PHPUnit_Selenium
若沒有成功,可能是沒有找到,可以先下底下指令,再執行剛才的指令
$sudo pear channel-discover pear.symfony-project.com $sudo pear channel-discover pear.symfony.com
Step2. 安裝好一個WordPress
安裝WordPress的方式,這邊就不多說了,大概流程如下:
下載WordPress繁中版(這裡)
-> 解開後直接放在自己目錄下的Sites,命名為wordpress
-> 建立Database
-> 設定wp-config.php
-> 開啟http://localhost/~alvin/wordpress,做初始設定,按下一步即可。
我這邊網誌是命為Hello WordPress,使用者admin,密碼1234。
Step3. 寫第一個測試
cd ~/Sites/ vim WpSeleniumTest.php加入底下的程式
<?php class WpSeleniumTest extends PHPUnit_Extensions_Selenium2TestCase { protected function setUp() { $this->setHost('localhost'); $this->setPort(4444); $this->setBrowser('firefox'); $this->setBrowserUrl('http://localhost/wordpress/'); } public function testTitle() { $this->url('http://localhost/~alvin/longda/'); $this->assertRegExp('/Hello WordPress/i', $this->title()); } } ?>
執行
phpunit WpSeleniumTest.php
得到這結果
這邊就可以看到ok了,另外再測測登入的功能加入底下的程式
public function testLogin() { $this->url('http://localhost/~alvin/wordpress/wp-login.php'); $form = $this->byCssSelector('form'); $action_page = $form->attribute('action'); $this->assertStringEndsWith('wp-login.php',$action_page); $this->byId('user_login')->value('admin'); $this->byId('user_pass')->value('1234'); $form->submit(); $this->url('http://localhost/~alvin/wordpress/wp-admin'); $this->assertRegExp('/Hello WordPress/i',$this->title()); }
再度ok
當然也可以用別的帳密測測,會得到Fail,因為沒登入成功,我這邊是硬要它轉用wp-admin,因為title不是期望的,所以Fail。
PS. 命名php檔要注意,不能用"_"分隔,否則會被取代成"/",而造成找不到檔案。
Selenium預設是只支援FireFox,所以要支援其他browser要另外再安裝其他的WebDriver,可以仔細看看http://docs.seleniumhq.org/download/。
感覺起來,用先用BDD建起一個期望的行為,再建立WordPress的function時,再用TDD的概念將每個function建起它的unit test,就可以建構完整的測試,之後修改就不怕會有side effect,當然超出預期的動作或結果也是會有的,但也可以藉此一個個補強囉
PS. 看到一篇文章不要盲目的 BDD / TDD,我對寫測試的看法,嗯~就看看囉!
參考網址:
Chapter 17. PHPUnit and Selenium
Selenium Downloads
https://github.com/stuartherbert/sublime-phpunit
沒有留言:
張貼留言