プロジェクトで Rspec を使用しており、各テストケースにかかった時間を出力したいのですが、Rspec が事前に構築された関数を提供する方法はありますか? example.execution_result.started_at でテストケースの開始時刻を取得できますが、テストケースの終了時刻を取得する方法がわかりません。終了時刻を取得できれば、開始時刻から終了時刻を減算して取得できます。各テストケースの期間。この場所で私を助けてくれる人はいますか?このコードを書きました
around(:each) do |example|
startTime=Time.now
var=example.run
puts var
endTime=Time.now
duration=endTime-startTime
puts "Time Taken->#{duration.to_f/60.to_f}"
end
しかし、私は Rspec が各テストケースの期間を返すために何らかの事前定義されたメソッドを提供しているに違いないと強く信じています。それを知っている人はいますか?
RSpec には、個々のテストの実行時間を含むファイルを生成する example_status_persistence_file_path 構成があります。
たとえば、次の RSpec 構成/例があるとします。
require 'rspec/autorun'
# Enable the reporting
RSpec.configure do |c|
c.example_status_persistence_file_path = 'some_file.txt'
end
# Run some tests
RSpec.describe 'some thing' do
it 'does stuff' do
sleep(3)
end
it 'does more stuff' do
sleep(2)
end
end
各サンプルのステータスと実行時間のレポートが生成されます。
example_id | status | run_time |
--------------- | ------ | ------------ |
my_spec.rb[1:1] | passed | 3.02 seconds |
my_spec.rb[1:2] | passed | 2.01 seconds |