我有一些ruby測試調用了不同的模塊,他們在執行過程中詳細說明了他們在執行某些「放置」命令時所做的操作。cucumber/ruby:可能將「puts」輸出到--format html文件中?
如果您在控制檯的測試,那麼你將看到的「看跌期權」命令的輸出在控制檯中,但如果你運行帶有該選項的測試:
ruby --format html --output file.html
那麼所有信息丟失。有沒有辦法在HTML報告中記錄簡單的字符串消息?
我有一些ruby測試調用了不同的模塊,他們在執行過程中詳細說明了他們在執行某些「放置」命令時所做的操作。cucumber/ruby:可能將「puts」輸出到--format html文件中?
如果您在控制檯的測試,那麼你將看到的「看跌期權」命令的輸出在控制檯中,但如果你運行帶有該選項的測試:
ruby --format html --output file.html
那麼所有信息丟失。有沒有辦法在HTML報告中記錄簡單的字符串消息?
我嘗試以下步驟:
When /^I do something$/ do
puts "Hello"
end
Then /^something happens$/ do
end
...用下面的命令:
cucumber -f html -o results.htm
...當我在瀏覽器中打開了results.html
文件,它顯示「你好「消息剛剛顯示該步驟後。我已經把它貼在HTML輸出的相關部分,所以你可以看到,從puts
輸出有:
<!-- 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>
什麼,演示的是,當黃瓜的puts
方法被調用(即:直接從步內)輸出將包含在html輸出中。但如果puts
調用來自其他地方(例如:您的模塊),那麼它將不會被包括在內。您可以考慮將您的puts
調用從模塊移動到步驟。此外,使用puts
是不是真的最好的做法,所以你可能要考慮完全放棄它...
啊,我認爲這可能是問題......因爲投標是在特定模塊內編寫的。 如果這種輸出信息的方法不是最好的方法,那麼顯示哪裏出現問題的方法是什麼?現在我們有一個被稱爲100次的模塊來檢查不同的URL;如果呼叫失敗,它只是通過救援獲得,我們通過'put'手動輸出消息,以便腳本不會停止。但在實踐中,這是一個失敗,在HTML報告中看到這種情況是有用的... 有關如何實現該目標的任何想法? – mickael
最好的方法是將結果公開給測試並在那裏聲明它。 –
你能記住世界中的每個場景中的前鉤:在您的支持類
# features/support/env.rb
Before do |scenario|
$world = self
end
然後和外界的模塊,可以使用看跌期權爲:
$world.puts 'something'
還可以獲取/設置黃瓜實例變量爲:
$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
然後,你需要這些方法
是「把」預期輸出的命令輸出部分可以包括這個模塊從你的程序?還是他們是爲了調試/信息的目的?如果希望從程序輸出它們,則最好通過編寫預計這些行的功能在HTML報告中捕獲它們。有關示例,請參閱此[blogpost](http://blog.jcoglan.com/2009/11/14/testing-command-line-apps-with-cucumber/)。如果「puts」輸出用於調試,那麼您不應該試圖將它們放入HTML報告中;這不是一個推薦的做法。 –
這些輸出實際上是在搶救某個特定模塊時捕獲的失敗,所以我不認爲我們可以爲這些錯誤編寫特定功能,即該功能已經存在,我們遍歷大約100個URL,其中一些失敗並且我們希望在HTML報告中輸出該失敗。你知道一種方法來捕獲HTML報告中的失敗嗎? – mickael