【发布时间】:2012-05-15 22:06:24
【问题描述】:
我对 ruby 和测试/单元有点陌生,所以这似乎是一个愚蠢的问题,但我正在寻找一种方法来动态地将测试输入到模板测试用例中(顺序很重要)。
基本上我有一个类似这样的测试用例:
主测试用例文件:
#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 要求行,我将无法加载文件而没有例外。如果我这样做,我不确定如何在中间插入我的方法。有什么建议吗?
谢谢!!!
【问题讨论】:
-
“顺序很重要”如果执行顺序很重要,那么您有一种“测试代码气味”,通常表明测试依赖于其他测试而不是原子测试。这通常会在以后造成许多维护噩梦,这可能是检查您如何做事的好理由。编写良好的功能测试应该能够独立运行,以任何顺序运行,甚至可以并行运行。
标签: ruby module watir testunit