首先发布在这里。我是一个新手程序员,你会看到,我正在学习使用Ruby编写自动化功能测试。我从Selenium IDE生成了下面的源代码,我一直在修改它,但我不明白为什么这个代码在没有实例化或方法调用的情况下运行。
require 'rubygems'
require "selenium-webdriver"
require "test/unit"
DataDir='Users/CH/src/ruby/data'
class Case1 < Test::Unit::TestCase
def setup
@driver = Selenium::WebDriver.for :firefox
@driver.manage.timeouts.implicit_wait = 30
@verification_errors = []
end
def teardown
#@driver.quit
assert_equal [], @verification_errors
end
def test_case1
@root_url="http://www.google.com"
@driver.get @root_url+"/#sclient=psy-ab&hl=en&biw=1440&bih=716&source=hp&q=Test&pbx=1&oq=Test&aq=f&aqi=g4&aql=&gs_sm=e&gs_upl=3631l4283l0l4700l4l4l0l0l0l0l272l860l0.2.2l4l0&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=10e90fa4cbd35dc9"
@driver.find_element(:id, "lst-ib").clear
@driver.find_element(:id, "lst-ib").send_keys "test"
end
def element_present?(how, what)
@driver.find_element(how, what)
true
rescue Selenium::WebDriver::Error::NoSuchElementError
false
end
def verify(&blk)
yield
rescue Test::Unit::AssertionFailedError => ex
@verification_errors << ex
end
end
很抱歉,如果这是一个毫无希望的n00b问题,但没有任何谷歌搜索帮助回答它。
答案 0 :(得分:4)
因为test/unit
(实际上minitest/unit
如果你在Ruby 1.9.x上)包含执行你定义的测试用例的代码。如果您愿意,可以浏览源here和here,看看它是如何完成的。基本上require 'test/unit'
行最终会调用Test :: Unit上的autorun
方法,它知道如何运行测试。
答案 1 :(得分:1)
Nutshell版本是类可以在扩展时执行的操作,包括将以test_
开头的方法转换为测试套件测试,运行它们以及聚合它们的结果。
Kernel.at_exit
方法还可用于在程序存在时从要运行的块创建Proc
。
结合这两个,瞧。
查看来源的深入细节,此时可能很容易消化。