51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 7970|回复: 10
打印 上一主题 下一主题

ruby+watir自定义类库介绍--日志操作类库

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-9-25 17:07:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现将自己编写的一些类库与大家分享下,类库不是很完善,请大家指教下
  1. #LibLogger为日志处理函数
  2. #- StartLogger函数:创建日志文件并初始化
  3. #- CreateTxtFile函数:创建txt格式的日志文件,并初始化
  4. #- CreateXmlFile函数:创建xml格式的日志文件,并初始化
  5. #- log函数:打印日志到txt日志文件中
  6. #- Result函数:将case执行的结果,打印日志到xml日志文件中
  7. #- closeLog函数:关闭日志文件
  8. module LibLogger
  9.   class DealLogger
  10.     def initialize()
  11.       require "rexml/document"
  12.       @datetime_format  = "%Y-%m-%d %H:%M:%S"
  13.       @file_name_format = "%Y%m%d_%H%M%S"
  14.       @log_path         =  "#{File.dirname(__FILE__)}/../output/集成回归结果"
  15.     end
  16.    
  17.       #功能说明:创建日志文件并初始化
  18.       #
  19.       #参数说明:
  20.       #- fileNamePrefix:日志文件的前缀
  21.       #- 默认txt日志文件格式如:TestLog 20090803_140845.txt
  22.       #- 默认xml日志文件格式如:TestLog 20090803_140845.xml
  23.       #
  24.       #调用示例:
  25.       #- $logger.StartLogger()
  26.       #
  27.       #返回值说明:无
  28.     def StartLogger(fileNamePrefix = 'TestLog')
  29.       
  30.       if (!FileTest::exist?(@log_path))
  31.         FileUtils.makedirs(@log_path)
  32.       end
  33.       
  34.       log_file_path = CreateTxtFile(fileNamePrefix)
  35.       #CreateXmlFile(fileNamePrefix)
  36.       return log_file_path
  37.     end
  38.    
  39.       #功能说明:创建txt格式的日志文件,并初始化
  40.       #
  41.       #参数说明:
  42.       #- fileNamePrefix:日志文件的前缀,默认txt日志文件格式如:TestLog 20090803_140845.txt
  43.       #
  44.       #调用示例:
  45.       #- $logger.CreateTxtFile("TestLog")
  46.       #
  47.       #返回值说明:无
  48.     def CreateTxtFile(fileNamePrefix)
  49.       date_string = Time.now.strftime("%Y%m%d")
  50.       time_string = Time.now.strftime("%H%M%S")
  51.       time = Time.now.strftime(@file_name_format)  
  52.       file_name = "#{@log_path}/#{date_string}/#{time_string}/#{fileNamePrefix} #{time}.txt"
  53.       puts "执行日志文件创建成功,日志路径:#{$TxtClass.GetRealPath(file_name)}"
  54.       @txt_log = File.new(file_name,'w+')
  55.       
  56.       @txt_log.puts "Logfile created on #{Time.now.strftime(@datetime_format)  } /"
  57.       @txt_log.puts  "Watir starting"

  58.       return file_name
  59.     end
  60.    
  61.       #功能说明:创建xml格式的日志文件,并初始化
  62.       #
  63.       #参数说明:
  64.       #- fileNamePrefix:日志文件的前缀,默认xml日志文件格式如:TestLog 20090803_140845.xml
  65.       #
  66.       #调用示例:
  67.       #- $logger.CreateXmlFile("TestLog")
  68.       #
  69.       #返回值说明:无
  70.     def CreateXmlFile(fileNamePrefix)
  71.       time = Time.now.strftime(@file_name_format)  
  72.       @file_name = "#{@log_path}/#{fileNamePrefix} #{time}.xml"
  73.       puts "执行结果日志文件创建成功,日志路径:#{@file_name}"
  74.       
  75.       @xml_log = File.new(@file_name,'w+')
  76.       @xml_log.puts "<?xml version=\"1.0\" encoding=\"gb2312\" ?> "
  77.       @xml_log.puts "<results>"
  78.     end
  79.    
  80.       #功能说明:打印日志到txt日志文件中
  81.       #
  82.       #参数说明:
  83.       #- message:日志内容,格式为字符串或二维数组,二维数组为打印数据库查询结果用
  84.       #- flag:是否执行puts输出
  85.       #
  86.       #调用示例:
  87.       #- $logger.log("TestLog")
  88.       #- $logger.log(['字段1','字段2'][['值1','值2']])
  89.       #
  90.       #返回值说明:
  91.       #- 无返回值
  92.     def log(message,flag = nil)

  93.       log_time = Time.now.strftime(@datetime_format)
  94.       
  95.       if (message != nil)
  96.         case message
  97.           when String
  98.             case flag
  99.               when nil
  100.                 log_info = "#{log_time} [#{message}]"
  101.                 puts "log #{message}\n"
  102.               when 'S'
  103.                 log_info = "#{log_time} [执行操作(开始):#{message}]"
  104.                 puts "log #{message}\n"
  105.               when 'E'
  106.                 log_info = "#{log_time} [执行操作(结束):#{message}]"
  107.                 puts "log #{message}\n"
  108.               else
  109.                 log_info = "#{log_time} [#{message}]"
  110.             end

  111.             @txt_log.puts log_info
  112.           when Array
  113.             if (flag == nil)
  114.               if (message.length == 2)
  115.                 @txt_log.puts "#{log_time} [查询结果如下:]"
  116.                 message[1].each_index do |x|
  117.                   @txt_log.puts "#{log_time} [--------------------第#{x+1}条数据-----------------------]"
  118.                   message[1][x].each_index do |i|
  119.                     log_info = "#{log_time} [#{message[0][i]}字段值:{#{message[1][x][i]}}]"
  120.                     @txt_log.puts log_info
  121.                   end
  122.                 end
  123.               end
  124.             else
  125.               if (message.length == 3)
  126.                 @txt_log.puts "#{log_time} [对比结果如下:]"
  127.                 message[1].each_index do |x|
  128.                   log_info = "#{log_time} [#{message[0][x]}字段值:预期值:{#{message[1][x]}} , 实际值:{#{message[2][x]}}]"
  129.                   #puts "[#{message[0][x]}字段值:预期值:{#{message[1][x]}} , 实际值:{#{message[2][x]}}]"
  130.                   @txt_log.puts log_info
  131.                 end
  132.               end
  133.             end
  134.         end
  135.       end #if end
  136.     end #def log end
  137.    
  138.       #功能说明:将case执行的结果,打印日志到xml日志文件中
  139.       #
  140.       #参数说明:
  141.       #- case_name:case的名称
  142.       #- result:case执行后的结果
  143.       #
  144.       #调用示例:
  145.       #- $logger.Result("用户登录",'成功')
  146.       #
  147.       #返回值说明:
  148.       #- 无返回值
  149.     def Result(case_name,result)
  150.       result_info = "<result testcase= '#{case_name}' result = '#{result}'></result>"
  151.       @xml_log.puts result_info
  152.     end
  153.    
  154.       #功能说明:关闭日志文件
  155.       #
  156.       #参数说明:
  157.       #- 无参数
  158.       #
  159.       #调用示例:
  160.       #- $logger.closeLog()
  161.       #
  162.       #返回值说明:
  163.       #- 无返回值
  164.     def closeLog()
  165.       #@xml_log.puts "</results>"
  166.       #@xml_log.close
  167.       @txt_log.close
  168.     end
  169.   end #class DealLogger  end
  170. end
复制代码
调用例子:
  1. require '../lib/LibLogger.rb'
  2. require '../lib/libFile.rb'


  3. log_file_path = "./output"
  4. $logger = LibLogger::DealLogger.new
  5. $TxtClass = LibFile::DealTxtFile.new

  6. #初始化日志文件
  7. $logger.StartLogger()

  8. #写入日志文件并打印到输出窗口
  9. $logger.log('测试日志,打印并输出到文件')

  10. #只写入日志文件
  11. $logger.log('测试日志,只输出到文件,不打印','N')

  12. #结束日志文件
  13. $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]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-9-28 16:43:37 | 只看该作者
多谢!分享呀!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-3-12 15:01:54 | 只看该作者
谢谢....
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2011-5-8 10:37:15 | 只看该作者
你好,如果我是调用了一个函数 ,比如说发送邮件,我需要对是否发生邮件成功,打印日志到指定的文件夹,这该怎么走呢
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2011-6-9 13:30:44 | 只看该作者
楼主,真好啊,谢谢
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2011-8-1 22:47:16 | 只看该作者
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2012-2-23 11:23:01 | 只看该作者
强烈需求这方面知识啊。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2012-5-10 16:17:08 | 只看该作者
正在学习中~~~
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2012-5-17 13:30:22 | 只看该作者
既然看了,顶一个吧,好帖子
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2012-5-30 18:22:24 | 只看该作者
LibFile.rb怎么没有呢?在哪里用呢?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2015-6-11 09:36
  • 签到天数: 39 天

    连续签到: 1 天

    [LV.5]测试团长

    11#
    发表于 2015-3-24 19:43:28 | 只看该作者
    多谢分享,学习学习!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-4-27 11:44 , Processed in 0.079675 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表