2011-10-04 57 views
3

我有一堆用Ruby编写的Selenium测试。我用IDE记录并将HTML测试导出为Ruby(Test :: Unit)测试。在我的TestingProject(在NetBeans中创建的Ruby项目)中,我只需创建一个新文件(TestFile.rb)并复制/粘贴从Selenium IDE导出的录制内容。一段时间后,我有几个文件每个测试我们的应用程序的不同部分。如何创建一个用Ruby编写的Selenium测试套件?

TestFile1.rb 
TestFile2.rb 
TestFile3.rb 

目前运行的测试我有一个main.rb的文件,我这么称呼这些测试文件,如:

#file name: main.rb 
require "./FolderName/TestFile1.rb" 
require "./FolderName/TestFile2.rb" 
require "./FolderName/TestFile3.rb" 

在红宝石“规定”方法需要一个文件,并执行的名字内容为ruby代码。此方法维护它已经处理的文件列表,因此它不会多次运行这些文件中的任何一个。但是,我无法控制文件执行时的顺序,也无法重新运行某些文件而无需声明它们两次。如何为我的测试(编程)创建一个真正的测试套件?请包括步骤。谢谢。

PS:This:Create JUnit TestSuite in a non-static way对我没有帮助。我希望在我的示例中使用步骤。谢谢。

回答

0

,直到找到一个更好的答案,你可以使用eval在有些贫民窟的方式做到这一点...

def test1 
    eval(File.open(File.expand_path('~/FolderName/TestFile1.rb')).read) 
end 

def test2 
    eval(File.open(File.expand_path('~/FolderName/TestFile2.rb')).read) 
end 

def test3 
    eval(File.open(File.expand_path('~/FolderName/TestFile3.rb')).read) 
end 

test1 
test2 
test3 
test1 
#etc 

就像我说的,这是错误的方式做到这一点,但希望当有人看到我的可怕这样做的方式,他们会提供更好的。

+0

这是一个不错的尝试,但不幸的是它并没有为我工作。即使我运行了test1,然后运行了test2,这些文件仍以自己的顺序执行。在输出中,我可以清楚地看到它运行test2,然后运行test1。 – AdamT

0

这个怎么样?抓住测试脚本文件并以任何方式排序(在这种情况下按字母顺序排列),然后只运行一次。

scripts = DIR.entries('~/FolderName').select { |e| e =~ /.+\.rb/ } 
scripts.sort.each { |s| `#{RUBY} s`} 
相关问题