ruby+watir自定义类库介绍--日志操作类库
现将自己编写的一些类库与大家分享下,类库不是很完善,请大家指教下#LibLogger为日志处理函数#- StartLogger函数:创建日志文件并初始化
#- CreateTxtFile函数:创建txt格式的日志文件,并初始化
#- CreateXmlFile函数:创建xml格式的日志文件,并初始化
#- log函数:打印日志到txt日志文件中
#- Result函数:将case执行的结果,打印日志到xml日志文件中
#- closeLog函数:关闭日志文件
module LibLogger
class DealLogger
def initialize()
require "rexml/document"
@datetime_format= "%Y-%m-%d %H:%M:%S"
@file_name_format = "%Y%m%d_%H%M%S"
@log_path ="#{File.dirname(__FILE__)}/../output/集成回归结果"
end
#功能说明:创建日志文件并初始化
#
#参数说明:
#- fileNamePrefix:日志文件的前缀
#- 默认txt日志文件格式如:TestLog 20090803_140845.txt
#- 默认xml日志文件格式如:TestLog 20090803_140845.xml
#
#调用示例:
#- $logger.StartLogger()
#
#返回值说明:无
def StartLogger(fileNamePrefix = 'TestLog')
if (!FileTest::exist?(@log_path))
FileUtils.makedirs(@log_path)
end
log_file_path = CreateTxtFile(fileNamePrefix)
#CreateXmlFile(fileNamePrefix)
return log_file_path
end
#功能说明:创建txt格式的日志文件,并初始化
#
#参数说明:
#- fileNamePrefix:日志文件的前缀,默认txt日志文件格式如:TestLog 20090803_140845.txt
#
#调用示例:
#- $logger.CreateTxtFile("TestLog")
#
#返回值说明:无
def CreateTxtFile(fileNamePrefix)
date_string = Time.now.strftime("%Y%m%d")
time_string = Time.now.strftime("%H%M%S")
time = Time.now.strftime(@file_name_format)
file_name = "#{@log_path}/#{date_string}/#{time_string}/#{fileNamePrefix} #{time}.txt"
puts "执行日志文件创建成功,日志路径:#{$TxtClass.GetRealPath(file_name)}"
@txt_log = File.new(file_name,'w+')
@txt_log.puts "Logfile created on #{Time.now.strftime(@datetime_format)} /"
@txt_log.puts"Watir starting"
return file_name
end
#功能说明:创建xml格式的日志文件,并初始化
#
#参数说明:
#- fileNamePrefix:日志文件的前缀,默认xml日志文件格式如:TestLog 20090803_140845.xml
#
#调用示例:
#- $logger.CreateXmlFile("TestLog")
#
#返回值说明:无
def CreateXmlFile(fileNamePrefix)
time = Time.now.strftime(@file_name_format)
@file_name = "#{@log_path}/#{fileNamePrefix} #{time}.xml"
puts "执行结果日志文件创建成功,日志路径:#{@file_name}"
@xml_log = File.new(@file_name,'w+')
@xml_log.puts "<?xml version=\"1.0\" encoding=\"gb2312\" ?> "
@xml_log.puts "<results>"
end
#功能说明:打印日志到txt日志文件中
#
#参数说明:
#- message:日志内容,格式为字符串或二维数组,二维数组为打印数据库查询结果用
#- flag:是否执行puts输出
#
#调用示例:
#- $logger.log("TestLog")
#- $logger.log(['字段1','字段2'][['值1','值2']])
#
#返回值说明:
#- 无返回值
def log(message,flag = nil)
log_time = Time.now.strftime(@datetime_format)
if (message != nil)
case message
when String
case flag
when nil
log_info = "#{log_time} [#{message}]"
puts "log #{message}\n"
when 'S'
log_info = "#{log_time} [执行操作(开始):#{message}]"
puts "log #{message}\n"
when 'E'
log_info = "#{log_time} [执行操作(结束):#{message}]"
puts "log #{message}\n"
else
log_info = "#{log_time} [#{message}]"
end
@txt_log.puts log_info
when Array
if (flag == nil)
if (message.length == 2)
@txt_log.puts "#{log_time} [查询结果如下:]"
message.each_index do |x|
@txt_log.puts "#{log_time} [--------------------第#{x+1}条数据-----------------------]"
message.each_index do |i|
log_info = "#{log_time} [#{message}字段值:{#{message}}]"
@txt_log.puts log_info
end
end
end
else
if (message.length == 3)
@txt_log.puts "#{log_time} [对比结果如下:]"
message.each_index do |x|
log_info = "#{log_time} [#{message}字段值:预期值:{#{message}} , 实际值:{#{message}}]"
#puts "[#{message}字段值:预期值:{#{message}} , 实际值:{#{message}}]"
@txt_log.puts log_info
end
end
end
end
end #if end
end #def log end
#功能说明:将case执行的结果,打印日志到xml日志文件中
#
#参数说明:
#- case_name:case的名称
#- result:case执行后的结果
#
#调用示例:
#- $logger.Result("用户登录",'成功')
#
#返回值说明:
#- 无返回值
def Result(case_name,result)
result_info = "<result testcase= '#{case_name}' result = '#{result}'></result>"
@xml_log.puts result_info
end
#功能说明:关闭日志文件
#
#参数说明:
#- 无参数
#
#调用示例:
#- $logger.closeLog()
#
#返回值说明:
#- 无返回值
def closeLog()
#@xml_log.puts "</results>"
#@xml_log.close
@txt_log.close
end
end #class DealLoggerend
end调用例子:require '../lib/LibLogger.rb'
require '../lib/libFile.rb'
log_file_path = "./output"
$logger = LibLogger::DealLogger.new
$TxtClass = LibFile::DealTxtFile.new
#初始化日志文件
$logger.StartLogger()
#写入日志文件并打印到输出窗口
$logger.log('测试日志,打印并输出到文件')
#只写入日志文件
$logger.log('测试日志,只输出到文件,不打印','N')
#结束日志文件
$logger.closeLog() 打印出来的日志格式:
Logfile created on 2009-09-17 17:40:08 /
Watir starting
2009-09-17 17:40:08 [测试报告文件创建成功,路径:F:\workspace\alipay\output\TestReport 20090917_174008.xlsx]
2009-09-17 17:40:11 [调用函数:LibExcel.rb文件中方法 saveAs(F:\workspace\alipay\output\TestReport 20090917_174008.xlsx)]
2009-09-17 17:40:12 [调用函数结束:LibExcel.rb文件中方法 saveAs(F:\workspace\alipay\output\TestReport 20090917_174008.xlsx)]
2009-09-17 17:40:13 [文件创建成功,路径为:F:\workspace\alipay\output\TestReport 20090917_174008.xlsx] 多谢!分享呀! 谢谢.... 你好,如果我是调用了一个函数 ,比如说发送邮件,我需要对是否发生邮件成功,打印日志到指定的文件夹,这该怎么走呢 楼主,真好啊,谢谢:) :victory: 强烈需求这方面知识啊。 正在学习中~~~ 既然看了,顶一个吧,好帖子 LibFile.rb怎么没有呢?在哪里用呢? 多谢分享,学习学习!
页:
[1]