キュウリのアフターフック

フォークス、

私は After フックを扱う際にいくつかの問題を抱えています。私はこのようなフォルダに私のテストを整理しました:

features/Accounts/accounts_api.feature
features/Accounts/step_definition/account_steps.rb

features/labs/create_lab.feature
features/labs/step_definition/labs_steps.rb

今度は、アカウント機能のステップ定義に After フックがあるので、 "Accounts"機能のすべてのシナリオの後にそのフックを実行したいが、すべてのシナリオの後に実行させたくない「ラボ」機能の私はこれを試した:

cucumber --tags @newlabs

上記のコードは、 newlabs というタグ付きのラボ機能にあるすべてのシナリオを実行するはずですが、 @newlabs としてタグ付けされたシナリオでは @after アカウントのステップ定義に存在するフックが起動します。私はなぜこれが起こっているのか、間違った方法でフックを使用しているのか、フックの全体的な理解が間違っているのかと考えています。

応答する時間を取ってくれてありがとう、これは多くの助けになります。

2

2 答え

可能であれば、間違った場所に After フックを定義します。 .feature ファイルではなく、 .rb After フック(他のフックも)を定義する必要があることに注意してください。フックの一般的な場所は features/support/hooks.rb です。この方法でフックを定義します:

# features/support/hooks.rb
After('@newlabs') do # will run after each scenario tagged with @newlabs 
   # your teardown ruby code 
end

# features/Accounts/accounts_api.feature
@newlabs # tag all scenarious of this feature with @newlabs tag
Feature: your feature

Scenario: your scenario
  Given: ...
  When: ...
  Then: ...

キュウリの出力では、フック定義から STDOUT に何かを出力しない限り、 After フックが実行されるのを見ることはできません - フックが暗黙的に実行されます。

2
追加された

フックは、どのようなステップ定義スクリプトが配置されているかは気にせず、すべてのシナリオで実行されます。または、具体的には、Cucumberに渡すタグに関係なく、すべての機能に対して、実行されるあらゆるシナリオの後でアフターフックが実行されます。

それ以上のコントロールが必要な場合は、フックのCucumber wikiページと「タグ付きフック」というセクションを見てください。

2
追加された