maeshimaの日記

メモ書きです

はじめる!Cucumber第7〜9章

シナリオアウトライン

検証シナリオのおおよその流れ(アウトライン)自体は同じまま、複数のデータの組み合わせをテストするための機能。

  1. "シナリオ"を"シナリオアウトライン"に変更する
  2. "bob"とか"alice"のようなデータ類を""のように<>を使った文字列に変更する
  3. サンプルセクションに<>でくくったデータの中身を表形式で定義する

""(ダブルクォート)で囲まれた箇所以外も置き換えて実行することが出来る。

タグ

rake cucumber:wip

で@wipタグのついたシナリオだけを実行できる。タグはシナリオ:(またはシナリオアウトライン:)の上に書く。

  • wipは"work in progress"の略。
  • @wipタグがついたシナリオは作業中なので、rake cucumberでは実行されない。
  • @wipは最大三つまで指定できる

wipだけ特殊?他のタグは普通のタグとして、script/cucumber等のオプションとして実行するタグを指定することが出来る。

タグの例

  • 外部システム連携が必要なシナリオに@external_systemというタグを付け、特定の環境のみ実行する
  • 時間のかかるテストは@slow_testというタグを付け、CI環境でのみ実行する

rakeで特定のタグを実行する

config/cucumber.ymlとrakeタスクを新しく定義するなどする。

タグ毎に前処理/後処理を定義する

BeforeやAfterの引数にタグを文字列で指定して処理内容を記述すると、タグの実行前後にフックできる。BeforeやAfterメソッドのブロック引数には、実行したテストシナリオのデータが入ってくる。

ruby-debug

cucumberのステップ定義の中にdebuggerを仕込める。