簡體   English   中英

如何在rspec中跳過x個測試數

[英]how to skip x number of tests in rspec

假設我們有一個需要5分鍾的測試套件

讓我們說它失敗了90%

讓我們說它失敗了95%

而不是運行3次(一次到90次,一次到95次,一次100%)~14分鍾

我想運行它兩次 - ish(一次從0到90,一次從90到95,95到100,並且一直到確保一切正常)如果我快速重新啟動它~10- 11分鍾

所以當它失敗時,我想輸出規格編號(根據當前的測試)然后我需要從命令行再次運行時從那個數字開始,所以,我如何讓rspec運行使用的東西像rspec spec/ --startat 321

我不認為這樣的事情會起作用,因為RSpec默認以隨機順序運行測試,以確保它們不依賴於它們的順序。 也許一個合適的解決方案是記下失敗的測試並運行那些。 你可以運行這樣的特定測試:

rspec /spec/controllers/example_controller_spec.rb:19

其中19是您的測試所在的行。 修復所有失敗的測試后,您可以重新運行整個測試套件以確保一切正常。

您可以通過在rspec中使用--tag選項來解決您遇到的問題。 您可以將標記應用於失敗的組,然后編寫一個小腳本以按您想要的順序執行它們。 這是標簽上rspec docs頁面

使用--tag(或-t)選項按標記過濾示例。

標記可以是簡單名稱或名稱:值對。 在第一種情況下,將過濾以:name => true的示例。 在第二種情況下,將使用:name => value的示例進行過濾,其中value始終為字符串。 在這兩種情況下,名稱都會轉換為符號。

標簽也可以通過在標簽之前添加〜來排除示例。 例如~tag將排除標記為:tag => true和~tag的所有示例:value將排除標記為:tag => value的所有示例。

為了與Cucumber語法兼容,標簽可以選擇以@符號開頭,這將被忽略。

doc頁面中的一些示例:

describe "group with tagged specs" do
  it "example I'm working now", :focus => true do; end
  it "special example with string", :type => 'special' do; end
  it "slow example", :skip => true do; end
  it "ordinary example", :speed => 'slow' do; end
end

這比使用行號或手動排除單個示例更容易。 希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM