2017-02-13 6 views
0

初めてここで私は可能な限り読みやすくするつもりです。私はこれが原因でアプリケーションへの統合のために必要である(すべての手順を取得するにはscenario.test_steps.map(&:name)を使用しています現在Ruby/Watirを使用してフックファイルでキュウリのデータテーブルを取得

Current cucumber test example

:下に見られるように、私はいくつかのデータをソートするためのデータテーブルを使用する機能ファイル内のテストを持っていますライフサイクルソフトウェアマネージャ)配列に、これは私が得るものです:

Cucumber steps got in the hooks file

私の質問です:それはやる前にデータテーブルの情報を取得することが可能になる|シナリオ|フックファイルにフックしますか?

ありがとうございました!

答えて

0

scenario.test_stepsを反復する場合、各テストステップには、対応するCucumber::Core::Ast::Stepがあります。これは、関連するAst::Stepがテストステップのsourceの最後の要素になりますなど、このようなステップ名とステップの特定の情報、データテーブルを、含まれています

test_step.source 
#=> [ 
#=> #<Cucumber::Core::Ast::Feature "Feature: Something" (features/something.feature:1)>, 
#=> #<Cucumber::Core::Ast::Scenario "Scenario: Only a test" (features/something.feature:3)>, 
#=> #<Cucumber::Core::Ast::Step "Given : the fields" (features/something.feature:4)> 
#=> ] 

Ast::Stepマルチライン引数にアクセスするには、multiline_argをチェック。データテーブルが指定されている場合はAst::DataTableが返されます。それ以外の場合はAst::EmptyMultilineArgumentが返されます。 data_table?を呼び出して、返された値がデータテーブルかどうかを調べることができます。定義されている場合

例として、以下の各試験ステップ及び出力データテーブルを反復であろう:返信@Justinコため

Before do |scenario|  
    scenario.test_steps.each do |test_step| 
    multiline_arg = test_step.source.last.multiline_arg 
    puts multiline_arg.raw if multiline_arg.data_table? 
    end 
end 
+0

ありがとう。私はコピー&ペーストしたとおり正確に貼り付けましたが、うまくいきませんでしたので、 'begin rescue'ブロックと_voilá_を使っていくつかの変更を行いました! –

関連する問題