我對Ruby和測試/單元有點新,所以這可能看起來像一個愚蠢的問題,但我正在尋找一種方法來動態地將測試輸入到模板測試用例中(順序很重要)。Ruby :: test/unit - 如何動態地將測試插入到測試用例的中間?
基本上我有一個測試用例類似於此:
主測試用例文件:
#testcase.rb
require 'test/unit/ui/console/testrunner'
require 'watir/testcase'
load "customTest1.rb"
class TC_Test_US < Watir::TestCase
def test_a
#do stuff
end
def test_b
#do stuff
end
#dynamically load website specific modules here
include myStuff
# end of custom tests carry on with generic tests
def test_y
#do stuff
end
def test_z
#do stuff
end
end
- 自定義的TestCase
#customTest1.rb
module myStuff
def test_customTest1
#do stuff
end
def test_customTest2
#do stuff
end
end
現在我有幾個customTestX.rb文件。目前我將我的test_a複製到每個文件中的test_z,這在我需要更改或添加新文件時很糟糕。
我希望能夠在主測試中重新使用測試,並在中間動態插入我的自定義測試(重要的是test_b在我的測試之前保留,test_y在我的測試之後保留)。我會動態地改變「加載customTestX.rb」,並保持在每個文件中命名相同的模塊。
當我像這樣啓動這個測試用例時,我沒有收到任何錯誤,但是我的自定義測試實際上沒有執行。腳本從test_b跳到test_y,customTest1和customTest2不會被執行。
答案可能在於我的主要testcase.rb的實例,但我還沒有成功做到這一點呢。一旦你加載主文件,它會執行....如果我刪除了testrunner require行,我無法加載該文件沒有例外。如果我這樣做,我不知道如何在中間插入我的方法。有什麼建議麼?
謝謝!
「順序是重要的」如果執行順序很重要,你有一個'測試代碼氣味',通常表示測試依賴於其他測試,而不是原子。這往往會在後來造成大量的維護噩夢,這可能是一個很好的原因,可以檢查你是如何做事的。編寫完善的功能測試應該能夠以任何順序,甚至是並行運行。 –