gpt4 book ai didi

ruby - 需要在ruby中每次执行后打印测试的开始和结束时间

转载 作者:太空宇宙 更新时间:2023-11-03 17:49:36 25 4
gpt4 key购买 nike

我是自动化领域的新手,在编写此文档时需要帮助。

 before(:each) do
# test start time
# video start time :00:00:00
setup function
end

it "test case 1" do
#perform action1
#perform action2 ...
end

it "test case 2" do
#perform action1
#perform action2 ...
end

after(:each) do
teardown function
#test end time
#video end time : 00:00:57
end

我的 .rb 文件看起来像这样,我需要打印测试执行前后的时间

想法:

当批量运行脚本开始执行时,视频也同时开始录制所以脚本打印的时间应该与视频播放时间相匹配视频播放时间从 00:00:00 开始所以当第一个测试用例开始执行时,显示的时间应该是 00:00:00类似地,第二个测试用例将在 00:00:57 执行,然后下一个在 00:01:46 执行

这样我就可以匹配哪个测试用例在视频的哪个时间轴上执行

Final Output: 
Video start time: 00:00:00
Video end time : 00:00:57

Video start time: 00:00:57
Video end time: 00:01:40

我必须用 ruby​​ 编写它。我怎样才能做到这一点。我应该使用计时器吗??

最佳答案

要跟踪时间,只需存储开始时间并将当前时间与需要知道从那时起经过了多少秒的时间进行比较:

start_time = Time.now
sleep(1)
Time.now - start_time # => 1.001715

为了在 RSpec 测试套件中的每个示例之前和之后做一些事情,around hooks是要走的路。

around(:each) do |example|
# This happens before the example
example.run
# This happens after the example
end

要将秒数格式化为“HH:MM:SS”,您可以结合使用 Time.atstrftime,如 Ruby/Rails - How to convert seconds to time? 中所述。 :

Time.at(123).utc.strftime("%H:%M:%S")
=> "00:02:03"

结合以上内容,您应该能够执行以下操作:

around(:each) do |example|
$start_time ||= Time.now
elapsed_seconds = Time.now - $start_time
puts "Video start time: #{Time.at(elapsed_seconds).utc.strftime("%H:%M:%S")}"
example.run
elapsed_seconds = Time.now - $start_time
puts "Video end time: #{Time.at(elapsed_seconds).utc.strftime("%H:%M:%S")}"
puts
end

这应该输出每个示例经过的秒数,例如:

Video start time: 00:00:00
Video end time: 00:00:01

Video start time: 00:00:01
Video end time: 00:00:03

Video start time: 00:00:03
Video end time: 00:00:03

关于ruby - 需要在ruby中每次执行后打印测试的开始和结束时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27182822/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com