2

我对 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

-- 自定义测试用例

#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 要求行,我将无法加载文件而没有例外。如果我这样做,我不确定如何在中间插入我的方法。有什么建议么?

谢谢!!!

4

1 回答 1

3

您的自定义测试未运行,因为它们不是以“测试”一词开头的。

“test”前缀是 Test::Unit 如何知道哪些方法是测试与常规方法。我相信 Watir::TestCase 是一样的。

尝试:

#customTest1.rb
module myStuff
    def test_customTest1
       #do stuff
    end

    def test_customTest2
       #do stuff
    end
end

更新 - 使用 TestSuite:

我不确定为什么您的解决方案不起作用,但看起来可行的一种解决方案是使用 TestSuite。然后,您可以调用您的起始测试用例、自定义测试用例和结束测试用例。

测试套件:

#testsuite.rb
require 'test/unit/ui/console/testrunner'
require 'test/unit/testsuite'
require 'rubygems'
require 'watir/testcase'
require 'testcase_start'
require 'testcase_end'
require 'customTest1'

class TS_MyTests
    def self.suite
        suite = Test::Unit::TestSuite.new
        suite << TC_Test_US_Start.suite
        suite << MyStuff.suite
        suite << TC_Test_US_End.suite
        return suite
    end
end
Test::Unit::UI::Console::TestRunner.run(TS_MyTests)

您的初始测试:

#testcase_start.rb
class TC_Test_US_Start < Watir::TestCase
    def test_a
        #do stuff
       puts 'a'
    end

    def test_b
        #do stuff
       puts 'b'
    end
end

你的结束测试:

#testcase_end.rb
class TC_Test_US_End < Watir::TestCase
    def test_y
       #do stuff
      puts 'y'
    end

    def test_z
       #do stuff
      puts 'z'
    end

end

您的自定义中间测试:

#customTest1.rb
class MyStuff < Watir::TestCase
    def test_customTest1
      puts '1'
    end

    def test_customTest2
      puts '2'
    end
end
于 2012-05-16T13:20:38.837 回答