PHPのCodeceptionでE2Eテスト
PHPでE2Eテストが作れるCodeceptionが簡単に使えてとても良かったという話。
インストール
composerでインストール
Codeceptionをインストールしたいディレクトリ配下でcomposerでインストールを行う。
composer require "codeception/codeception" --dev
使ってみる
セットアップ
./vendor/bin/codecept bootstrap
Codeceptionの設定ファイルと、テストのディレクトリが作成されます。
テストクラスを作成する
./vendor/bin/codecept generate:cest acceptance First
FirstCest.phpというテストのクラスの雛形が作成されます。
初期設定
tests/acceptance.suite.yml
actor: AcceptanceTester modules: enabled: - PhpBrowser: url: https://www.google.co.jp/ - \Helper\Acceptance
PhpBrowserを指定してますが、PhantomJSやSelenium WebDriverを指定することもできます。PhantomJS、Selenium WebDriverを使うときはDriverのインストールが必要です。
JavaScriptが発動する画面のテストが必要な場合は、PhpBrowserだとテストができません。PhantomJS、Selenium WebDriverのどちらかを使いましょう。
テストを書く
<?php class FirstCest { public function frontpageWorks(AcceptanceTester $I) { $I->amOnPage('/'); $I->see('Google'); } }
googleのサイトを開いて、ページ内に「Google」という文字列が存在するかというテストを書いてます。
と説明しなくても、テストの書き方が英語表記に近いので、どんなテストをしてるのかなんとなくわかると思います。
テストを実行する
./vendor/bin/codecept run
run
コマンドでテスト実行ができ、何も引数に指定しないとテスト全体を実行します。
他にもテストの実行方法はいろいろありまして。
ファイル単位で実行したい場合は、ファイルパスを指定。
./vendor/bin/codecept run tests/acceptance/FirstCest.php
テストスイートを指定して実行したい場合は、テストスイートの名前を指定すればいいです。
./vendor/bin/codecept run acceptance
オプションで、--steps
はテストのステップごとを出力、--debug
はより詳細なデバッグ情報を出力してくれます。
./vendor/bin/codecept run --steps
感想
- 簡単。
- テストの書き方が英語表記に近く、直感的にわかりやすい。好き。
- テストが失敗すると、スクリーンショットを撮っといてくれる。嬉しい。
- 今回はE2Eテストのことしか書いてませんが、単体テスト〜受け入れテストまですべてCodeceptionで書くことができる。管理がしやすそう。