如何创建用Ruby编写的Selenium测试套件?

如何创建用Ruby编写的Selenium测试套件?,ruby,selenium,selenium-rc,Ruby,Selenium,Selenium Rc,我有很多用Ruby编写的Selenium测试。我用IDE记录并将HTML测试导出为Ruby(Test::Unit)测试。在我的TestingProject(在NetBeans中创建的Ruby项目)中,我只需创建一个新文件(TestFile.rb)并复制/粘贴从Selenium IDE导出的记录内容。过了一会儿,我有了几个文件,每个文件都在测试应用程序的不同部分 TestFile1.rb TestFile2.rb TestFile3.rb 当前要运行测试,我有一个main.rb文件,我这样调用这

我有很多用Ruby编写的Selenium测试。我用IDE记录并将HTML测试导出为Ruby(Test::Unit)测试。在我的TestingProject(在NetBeans中创建的Ruby项目)中,我只需创建一个新文件(TestFile.rb)并复制/粘贴从Selenium IDE导出的记录内容。过了一会儿,我有了几个文件,每个文件都在测试应用程序的不同部分

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中,“require”方法采用文件名,并以ruby代码的形式执行内容。此方法维护已处理文件的列表,因此不会多次运行这些文件。但是,我无法控制文件的执行顺序,也无法在不声明两次的情况下重新运行某些文件。如何(以编程方式)为我的测试创建一个真正的测试套件?请包括步骤。多谢各位


附言:这对我没有帮助。我想在我的例子中介绍一些步骤。谢谢。

在你找到更好的答案之前,你可以使用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

就像我说的,这是一种错误的方式,但希望当有人看到我糟糕的方式时,他们会提供更好的方式。

这个怎么样?抓取测试脚本文件并以任何方式(在本例中按字母顺序)对它们进行排序,然后一次只运行一个

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

所以我想你可以这样做:

我假设每个都有安装和拆卸,但是如果您将它们映射到CSV中,可能会执行以下操作

#file name: main.rb
require 'csv'

def test_case
    test_case = './FolderName/TestPlan.csv'
    descriptor = test_case.shift
    descriptor = descriptor.map { |key| key.to_sym }
    test_case.map { |test| Hash[descriptor.zip(test) ] }
end

def run
    setup
    yield
    teardown
end 

test_case.each do |test|
    run do
##someFlair
        puts "Running Test #{test[:RECORDNUM]} @ #{(Time.now.strftime("%m-%d-%Y_%H%M%S"))}"
        require test[://columnReferring"./FolderName/TestFile1.rb"//]
    end
end
这可能不是最好的办法,但我认为它可以奏效


编辑:添加了一些技巧来显示如果您将“RECORDNUM”作为列添加到csv,它可以告诉您正在运行哪个测试

这是一次很好的尝试,但不幸的是,它对我不起作用。尽管我先运行了test1,然后又运行了test2,但这些文件仍按它们自己的顺序执行。在输出中,我可以清楚地看到它先运行test2,然后运行test1。