TA的每日心情 | 无聊 2018-9-27 10:05 |
---|
签到天数: 36 天 连续签到: 1 天 [LV.5]测试团长
|
6#
楼主 |
发表于 2013-1-25 16:58:26
|
只看该作者
本帖最后由 黑羽祭 于 2013-1-25 17:00 编辑
回复 5# 赵佳乐SMILE
好吧,那我来抛砖引玉一下~比如:我在外部vbs文件中写入一段脚本,是个log工具的class:
- Set Lg = new LogTools '实例化 LogTools
- Class LogTools
- Dim LogFileName 'log文件名
- Dim LogFilePath 'log文件路径
- Dim isPtLog '是否打印日志
- Dim NowFunctionDir '当前Function的路径
-
- Sub Class_Initialize
- Call NewLogFolder
- Call NewLogFile
- Depth = 0
- End Sub
-
- Sub Class_Terminate
-
- End Sub
-
- '------------------------------------------------------------------------
- '返值:log文件名
- Property Get getLogFileName()
- '处理 LogFileName
- If IsEmpty(LogFileName) Then
- LogFileName = "log" & getUniqueNumber & ".txt"
- End If
-
- getLogFileName = LogFileName
- End Property
-
- '------------------------------------------------------------------------
- '返值:log文件路径
- Property Get getLogFilePath()
- '处理 LogFilePath
- If IsEmpty(LogFilePath) Then LogFilePath = Environment("TestDir") & "\LOG\" & getLogFileName
-
- getLogFilePath = LogFilePath
- End Property
-
- '------------------------------------------------------------------------
- '返值:当前Function的路径
- Property Get getNowFunctionDir()
- getNowFunctionDir = NowFunctionDir
- End Property
-
- '------------------------------------------------------------------------------
- '属性:是否打印 log
- Property Let isPrintLog(ByVal oValue)
- isPtLog = oValue
- isPrintLog = isPtLog
- End Property
- Property Get isPrintLog()
- If IsEmpty(isPtLog) Then
- '给默认值
- isPtLog = True
- End If
- isPrintLog = isPtLog
- End Property
-
- '------------------------------------------------------------------------
- '作用:新建Log文件夹
- Sub NewLogFolder()
- Dim FSO , FolderDir
- Set FSO = CreateObject("Scripting.FileSystemObject")
- FolderDir = Environment("TestDir") & "\LOG"
- If Not(FSO.FolderExists(FolderDir)) Then
- FSO.CreateFolder(FolderDir)
- End If
- Set FSO = Nothing
- End Sub
-
- '------------------------------------------------------------------------
- '作用:新建Log文件
- Sub NewLogFile()
- '新建文件
- Dim FSO
- Const ForReading=1,ForWriting=2,ForAppending=8 '参数赋值(1:只读,2:只写,3:追加)
- Set FSO = CreateObject("Scripting.FileSystemObject") '创建一个文本对象
- Set LOGFILE = FSO.OpenTextFile(getLogFilePath,8,true)
- wait 3
- Set LOGFILE = Nothing
- Set FSO = Nothing
- End Sub
- '------------------------------------------------------------------------
- '作用:重写 Log
- '参数:oWords:需要打印的内容
- Sub Log(oWords)
- '是否打印的判断
- If isPrintLog = False Then Exit Sub
-
- '处理打印内容
- oWords = "[" & now & "] [" & NowFunctionDir & "] " & oWords
-
- 'Log 写入QTP
- print oWords
-
- 'LOG 写入外部文件
- Dim FSO
- Set FSO = CreateObject("Scripting.FileSystemObject")
- Set ologFile = FSO.OpenTextFile(getLogFilePath, 8, true)
- ologFile.WriteLine (CStr(oWords))
- ologFile.Close
- Set ologFile = Nothing
- Set FSO = Nothing
- End Sub
- '------------------------------------------------------------------------
- '作用:进入 Function 时的标记
- '参数:oFunctionName:Function名
- Sub GoIn(oFunctionName)
- NowFunctionDir = NowFunctionDir & ">>" & oFunctionName
- Log "-----------------进入<" & oFunctionName & ">-----------------"
- End Sub
-
-
- '------------------------------------------------------------------------
- '作用:出 Function 时的标记
- Sub GoOut()
- Dim arrFunDir
- arrFunDir = split(NowFunctionDir , ">>" , -1 , 1)
- Log "-----------------退出<" & arrFunDir(ubound(arrFunDir)) & ">-----------------"
-
- NowFunctionDir = ""
- Dim i
- For i = 1 To ubound(arrFunDir) - 1
- NowFunctionDir = NowFunctionDir & ">>" & arrFunDir(i)
- Next
- End Sub
-
-
- '------------------------------------------------------------------------------
- '作用:得到一个唯一的值
- Function getUniqueNumber()
- Dim yyyy,mm,dd,ss
- Dim nowtime
- nowDate = date
- nowTimer = cstr(int(timer))
- yyyy = CStr(Year(nowDate))
- mm = CStr(String(2 - Len(Month(nowDate)) , "0") & Month(nowDate))
- dd = CStr(String(2 - Len(Day(nowDate)) , "0") & Day(nowDate))
- ss = CStr(String(5 - Len(nowTimer) , "0") & nowTimer)
- GetUniqueNumber = yyyy & mm & dd & ss
- End Function
-
- End Class
复制代码
然后,在Action中随便写一点调用函数的测试脚本:
- lg.Log "开始示范"
- Call Main
- Public Sub Main()
- lg.GoIn "Main"
- '----------------------------------------------------------
- lg.Log "我在Main函数里111"
- Call test1()
- lg.Log "我在Main函数里222"
- lg.isPrintLog = False '关闭LOG打印
- lg.Log "这个不会出现的"
- '----------------------------------------------------------
- lg.GoOut
- End Sub
- Function test1()
- lg.GoIn "test1"
- '----------------------------------------------------------
- lg.Log "我在test1函数里111"
- Call test2()
- lg.Log "我在test1函数里222"
- '----------------------------------------------------------
- lg.GoOut
- End Function
- Function test2()
- lg.GoIn "test2"
- '----------------------------------------------------------
- lg.Log "我在test2函数里"
- '----------------------------------------------------------
- lg.GoOut
- End Function
复制代码
运行后,打印的结果是:
[2013/1/25 16:52:55] [] 开始示范
[2013/1/25 16:52:55] [>>Main] -------------------进入<Main>-------------------
[2013/1/25 16:52:55] [>>Main] 我在Main函数里111
[2013/1/25 16:52:55] [>>Main>>test1] -------------------进入<test1>-------------------
[2013/1/25 16:52:55] [>>Main>>test1] 我在test1函数里111
[2013/1/25 16:52:55] [>>Main>>test1>>test2] -------------------进入<test2>-------------------
[2013/1/25 16:52:55] [>>Main>>test1>>test2] 我在test2函数里
[2013/1/25 16:52:55] [>>Main>>test1>>test2] -------------------退出<test2>-------------------
[2013/1/25 16:52:56] [>>Main>>test1] 我在test1函数里222
[2013/1/25 16:52:56] [>>Main>>test1] -------------------退出<test1>-------------------
[2013/1/25 16:52:56] [>>Main] 我在Main函数里222
当然在这个脚本的目录下的LOG文件夹内,也会有个这样内容的文本文件。
但这段脚本有个小毛病,如果我用Exit Function写在中间,就必须在Exit Function前写上一句lg.Log,不然[]中的记录会错位
|
|