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に続く。