4

さまざまなモジュール、実行中にいくつかの「プット」コマンドで何をしているかを詳述するクラスを呼び出すいくつかのルビーテストがあります。

これらのテストをコンソールで実行すると、コンソールに「puts」コマンドの出力が表示されますが、オプションを使用してテストを実行すると、次のようになります。

ruby --format html --output file.html

その情報はすべて失われます。HTML レポート内に単純な文字列メッセージを記録する方法はありますか?

4

2 に答える 2

0

各シナリオの Before フックで World を思い出すことができます:

# features/support/env.rb
Before do |scenario|
  $world = self
end

次に、外部のサポートクラスとモジュールで puts を次のように使用できます。

$world.puts 'something'

また、Cucumber インスタンス変数を次のように取得/設定できます。

$world.instance_variable_get(:@user)
$world.instance_variable_set(:@user, user)

また、可視性を高めるために、これら 2 つのメソッドをヘルパーに抽出することも好みます。

module Helpers
  def get_scenario_variable(symbol)
    $world.instance_variable_get(symbol)
  end

  def set_scenario_variable(symbol, value)
    $world.instance_variable_set(symbol, value)
  end
end

次に、これらのメソッドが必要な場所にこのモジュールを含めることができます

于 2013-03-18T14:51:36.440 に答える
0

次の手順を試しました。

When /^I do something$/ do
  puts "Hello"
end

Then /^something happens$/ do
end

...次のコマンドを使用します。

cucumber -f html -o results.htm

...results.htmlブラウザでファイルを開くと、ステップを表示した直後に「Hello」メッセージが表示されました。putsHTML 出力の関連セクションを添付したので、出力がそこにあることがわかります。

<!-- the first step -->
<li id='features_thing_feature_4' class='step passed'>
    <div class="step_name">
        <span class="keyword">When </span>
        <span class="step val">I do something</span>
    </div>
    <div class="step_file">
        <span>features/step_definitions/thing_steps.rb:1</span>
    </div>
</li>
<!-- anything that the above step passed to `puts` -->
<li class="step message">Hello</li>
<!-- the second step -->
<li id='features_thing_feature_5' class='step passed'>
    <div class="step_name">
        <span class="keyword">Then </span>
        <span class="step val">something happens</span>
    </div>
    <div class="step_file">
        <span>features/step_definitions/thing_steps.rb:5</span>
    </div>
</li>

これは、cucumber のputsメソッドが呼び出されると (つまり、ステップ内から直接)、出力が html 出力に含まれることを示しています。ただし、puts呼び出しが別の場所 (例: モジュール) からのものである場合は、含まれません。puts呼び出しをモジュールからステップに移動することを検討できます。また、使用putsは実際にはベストプラクティスではないため、完全に削除することを検討することをお勧めします...

于 2012-10-17T23:25:35.123 に答える