しごとのはなし

web関連の仕事の話をメモ的に。

codeceptionことはじめ、その1

漸くここの仕事場でも、テスト自動化を導入できそうな余裕と論調(ここ大事)が形成されたので先走りつつも色々試している。とりあえず今日の成果。

#執筆時点でのcodeceptionは1.6.3 

 

まずは、Quickstartに従って...

1. Download + 2. install

wget http://codeception.com/codecept.phar

php codecept.phar bootstrap

これで、tests/ ディレクトリが作成され、テストを作成する準備ができる

 

3. Create Test

php codecept.phar generate:cept acceptance Welcome

で、WelcomeCept.phpというひな形がtests/acceptanceに作成されるのでそこにゴリゴリとテストを書いていけばよさそう。

ちなみに、1ファイルが1 Testという扱いで、SeleniumのプロセスもTestの数だけ立ち上がるみたい。(この辺はどう運用すべきか要調査...)

 

4. Write Basic Test

$I = new WebGuy($scenario);
$I->wantTo('ensure that frontpage works');
$I->amOnPage('/'); 
$I->see('Home');

# ゴメンね、とりあえず本家のコピペに解説を加える程度だよ...

まずはWebGuyのインスタンスを作成。

で、何をしたいか、とコメント的にwantToメソッド呼び出し。

そして、amOnPageで開く場所を指定、だね。

で、Home、が見えているか、というテスト。

なんとも見たままのシナリオをコードに落とせる。

ちなみに、これをそのままtextに変換できるけど、その件についてはまた別途。

 

5. Configure Acceptance Tests

で設定ファイルtests/acceptance.suite.ymlを編集。

 

class_name: WebGuy 
modules: 
    enabled: 
- Selenium2 - WebHelper config: Selenium2: browser: "safari" url: 'http://localhost/yourapp/' delay: 1000

本文ではPhpBrowserと書いてあるんだけど、javascriptのインタラクションもテストしたいので、ここは一気にSelenium2+Safariにしておく。とりあえずロードの時間を考慮して1秒づつ実行(delay:1000)という事にしておく。

 

 

6. Run!

 

でいよいよ実行。ターミナルから

 

php codecept.phar run

で、こんな結果が返ってくるんじゃないかと思います。

Suite acceptance started 
Trying to ensure that frontpage works (WelcomeCept.php) - Ok
Suite functional started
Suite unit started

Time: 1 second, Memory: 21.00Mb
OK (1 test, 1 assertions)

ここまで割と順調に行ったもんだから、使ってみようと思ったんだけど(Behatはここまでたどり着かなかった...orz)問題はここからだったんだよ。

 

その2に続く。