我們想獲得很好的log日志,這需要我們動手去寫,這里有個生成文件log的實例:
首先我們有個主log生成器, logfactory.rb
require 'logger'
# default logger
class LoggerFactory
# start logger
def LoggerFactory.start_default_logger(fileNamePrefix)
# time = Time.now.strftime("%m %d %Y %H %M %s")
time = Time.now.strftime("%Y%m%d%H%M%S")
# logger = CoreLogger.new(File.join(File.dirname(__FILE__), "#{fileNamePrefix}_#{time}.txt") ,logs to keep, maxlogsize)
logger = CoreLogger.new(File.join(File.expand_path(".") + "\logs\", "#{fileNamePrefix}_#{time}.txt") ,2, 1000000)
return logger
end
end
class CoreLogger < Logger
# extend the logger, overide it
def initialize(fileName, logsToKeep, maxLogSize)
super(fileName , logsToKeep, maxLogSize)
self.level = Logger::INFO # set to INFO level
self.datetime_format = "%d-%b-%Y %H:%M:%S"
self.info("Logger starting...")
end
#overloaded "log" from logger.rb to something more intuitive.
def log(message)
puts "log #{message}
" #optional. comment out if you don't want to see logging in the console
info(message) #calls info in logger.rb -- would be good to use different logging levels
end
end
然后在我們的case中引入:
require 'logfactory'
可以進行使用了:
def login_action
# Navigate to target URL
$browser.goto(TEST_SITE)
$logger.log("Passed: Step " + $stepcounter.to_s() + ": Navigate to URL:" + TEST_SITE)
$stepcounter=$stepcounter + 1
# wait till the user name element show up
Watir::Wait.until {$browser.text.include? "USER NAME:"}
# enter user name
$browser.text_field(:name, "UserName").set(LOGINID)
$logger.log("Passed: Step " + $stepcounter.to_s() + ": Enter '" + LOGINID + "' in the User Name text field")
$stepcounter=$stepcounter + 1
# enter user password
$browser.text_field(:name, "UserPassword").set(PASSWORD)
$logger.log("Passed: Step " + $stepcounter.to_s() + ": Enter '" + PASSWORD + "' in the Password text field")
$stepcounter=$stepcounter + 1
# click Login button
$browser.button(:value, "Login").click
$logger.log("Passed: Step " + $stepcounter.to_s() + ": Click the 'Login' button")
$stepcounter=$stepcounter + 1
# if the duplicate login session pop up show up
if $browser.button(:value, 'OK').exist? # Yes, pop up is here
$browser.button(:value, 'OK').click # Click OK button
$logger.log("Passed: Step " + $stepcounter.to_s() + ": click the 'OK' button")
$stepcounter=$stepcounter + 1
end
# check login sucessfully or not
# Watir::Wait.until {$browser.title.include?('Home')}
$browser.div(:id, "content").wait_until_present
if $browser.div(:id, "content").text.include?"Home"
$logger.log("Passed: Step " + $stepcounter.to_s() + ": Login successfully")
$stepcounter=$stepcounter + 1
else
$logger.log("Failed: Step " + $stepcounter.to_s() + ": Login failed")
$stepcounter=$stepcounter + 1
end
end
def logout_action
# click the logout link
$browser.link(:text, "Log Out").click
$logger.log("Passed: Step " + $stepcounter.to_s() + ": Click the 'Log Out' link")
# close the browser
$browser.close
end
生成的結果如:
# Logfile created on 2012-11-21 16:17:52 +0800 by logger.rb/31641
I, [21-Nov-2012 16:17:52#5096] INFO -- : Logger starting...
I, [21-Nov-2012 16:17:52#5096] INFO -- :
I, [21-Nov-2012 16:17:54#5096] INFO -- : ------------------------------------------
I, [21-Nov-2012 16:17:54#5096] INFO -- : ## Beginning of test case 01 ##
I, [21-Nov-2012 16:17:54#5096] INFO -- : ------------------------------------------
I, [21-Nov-2012 16:17:55#5096] INFO -- : Passed: Step 1000: Navigate to URL:http://10.32.152.113:8080/
I, [21-Nov-2012 16:17:57#5096] INFO -- : Passed: Step 1001: Enter 'test@gmail.com' in the User Name text field
I, [21-Nov-2012 16:17:58#5096] INFO -- : Passed: Step 1002: Enter 'password123' in the Password text field
I, [21-Nov-2012 16:17:58#5096] INFO -- : Passed: Step 1003: Click the 'Login' button
I, [21-Nov-2012 16:17:59#5096] INFO -- : Passed: Step 1004: click the 'OK' button
I, [21-Nov-2012 16:18:00#5096] INFO -- : Passed: Step 1005: Login successfully
I, [21-Nov-2012 16:18:00#5096] INFO -- : ------------------------------------------
I, [21-Nov-2012 16:18:00#5096] INFO -- : ## End of test case 01 ##
I, [21-Nov-2012 16:18:00#5096] INFO -- : ------------------------------------------