如何找到 Rspec 中每个测试用例所花费的时间

Raj*_*lan 4 ruby rspec watir capybara

我在我的项目中使用 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
Run Code Online (Sandbox Code Playgroud)

但我坚信 Rspec 必须提供一些预定义的方法来返回每个测试用例的持续时间,你有人知道吗?

Jus*_* Ko 10

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
Run Code Online (Sandbox Code Playgroud)

生成每个示例的状态和运行时间的报告:

示例_id | 状态 | 运行时 |
---------------- | ------ | ------------ |
my_spec.rb[1:1] | 通过 | 3.02 秒 |
my_spec.rb[1:2] | 通过 | 2.01 秒 |