【QTP】【头脑风暴】如何在脚本运行时,Log中能记录当前进入的函数
来源:互联网 发布:大数据系统知网 编辑:程序博客网 时间:2024/04/20 21:11
在坛子里发了个帖子:
然后,在Action中随便写一点调用函数的测试脚本:
运行后,打印的结果是:
【头脑风暴】如何在脚本运行时,Log中能记录当前进入的函数
链接:http://bbs.51testing.com/thread-893562-1-1.html
好吧,那我来抛砖引玉一下~比如:我在外部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 MainPublic Sub Main() lg.GoIn "Main" '---------------------------------------------------------- lg.Log "我在Main函数里111" Call test1() lg.Log "我在Main函数里222" lg.isPrintLog = False '关闭LOG打印 lg.Log "这个不会出现的" '---------------------------------------------------------- lg.GoOutEnd SubFunction test1() lg.GoIn "test1" '---------------------------------------------------------- lg.Log "我在test1函数里111" Call test2() lg.Log "我在test1函数里222" '---------------------------------------------------------- lg.GoOutEnd FunctionFunction test2() lg.GoIn "test2" '---------------------------------------------------------- lg.Log "我在test2函数里" '---------------------------------------------------------- lg.GoOutEnd 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
[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,不然[]中的记录会错位。
但这段脚本有个小毛病,如果我用Exit Function写在中间,就必须在Exit Function前写上一句lg.Log,不然[]中的记录会错位。
请各位如果有什么想说的经过留言或到上面的地址里发帖。
畅所欲言~
- 【QTP】【头脑风暴】如何在脚本运行时,Log中能记录当前进入的函数
- 如何进行头脑风暴
- 如何做头脑风暴
- 失败的头脑风暴
- 失眠的头脑风暴
- 鼠鼠们的头脑风暴
- 头脑风暴的禁忌
- 【我的头脑风暴】
- 头脑风暴的感受
- LR中运行QTP脚本的注意事项
- LoadRunner如何在脚本运行时修改log设置选项?
- 漏斗模型的头脑风暴
- 头脑风暴!
- 头脑风暴
- 头脑风暴
- 头脑风暴
- 头脑风暴
- 头脑风暴
- Flex中使用TabBar ViewStack 控件不加载问题
- 从游戏设计机制以及玩家心理特征到互联网产品
- java图片处理 文字水印 图片水印 缩放 补白
- Eclipse黑色背景主题
- 笔记本电脑如何通过GPRS上网?
- 【QTP】【头脑风暴】如何在脚本运行时,Log中能记录当前进入的函数
- Django整合Extjs 配置路径(一)
- js实现input:file的click事件
- JavaScript转换农历类
- Window系统小设置
- FusionCharts中的多语言字符使用方法
- android:allowTaskReparenting(clearTaskOnLaunch...)
- 从vi中incsearch得到的
- MS sqlserver全文管理与全文查询结合的示例