仕事で機能スイートをクリーンアップしようとしていますが、キュウリにシナリオを繰り返して、機能の次のシナリオに進む前に合格するかどうかを確認する方法があるかどうか疑問に思っていました。ファントムは私のヘッドレスウェブキットブラウザですポルターガイストは私のドライバーです。
基本的に、ボックスがすべてのテストに圧倒され、シナリオ中にページがテストしようとしているものをレンダリングするのに十分な時間がないため、ビルドは失敗し続けます。したがって、これにより誤検知が発生します。どのテストがビルドをハングアップさせるかを予測する方法がわかりません。
各シナリオの後に発生するフック(1つのアイデア)があると便利です。シナリオが合格した場合は、そのシナリオの結果を印刷して次に進みます。ただし、シナリオが失敗した場合は、ビルドがめまいにならないように、もう一度実行してみてください。次に、そのシナリオの結果を印刷して、次のテストに進みます。
誰かがそれを実装する方法について何か考えがありますか?
私は次のようなことを考えています
After do |scenario|
if scenario.failed?
result = scenario.run_again # I just made this function up I know for a fact this doesn't actually exist (see http://cukes.info/api/cucumber/ruby/yardoc/Cucumber/Ast/Scenario.html)
if !result
Cucumber.wants_to_quit = true
end
end
end
これについて私が見た最初の解決策は、Cucumberを使用して失敗したシナリオを再実行する方法ですか?
これは問題ありませんが、それを確認する必要があります
cucumber @rerun.txt
テストに合格した場合、実際にレポートを修正しました。お気に入り
cucumber @rerun.txt --format junit --out foo.xml
ここで、foo.xmlは、3と4が失敗している間に機能1、2、5が通過したと最初に言ったjunitレポートですが、rerun.txtが3と4を再実行します。
私はrerunを広範囲に使用していますが、そうです、正しい機能がrerun.txtファイルに出力されます。たくさんの「プロファイル」を定義するcucumber.ymlファイルがあります。再実行プロファイルに注意してください。
<%
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
%>
<% standart_opts = "--format html --out report.html --format rerun --out rerun.txt --no-source --format pretty --require features --tags ~@wip" %>
default: <%= standart_opts %> --no-source --format pretty --require features
rerun: <%= rerun_opts %> --format junit --out junit_format_rerun --format html --out rerun.html --format rerun --out rerun.txt --no-source --require features
core: <%= standart_opts %> --tags @core
jenkins: <%= standart_opts %> --tags @jenkins
だからここで何が起こるかは私がキュウリを実行することです。最初の実行中に、失敗したすべてのシナリオがrerun.txtファイルにスローされます。その後、次のコマンドを使用して、失敗したテストのみを再実行します。
cucumber -p rerun
これの唯一の欠点は、追加のコマンド(もちろん、自動化できます)が必要であり、テストメトリックが適切に配置されていると、テストメトリックが乱雑になることです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加