QTRunner

自动化测试框架中必不可少的一部分是测试脚本的调度执行,一般采用AOM方式调用QTP,需要包括设置测试参数、指定测试结果文件存储的目录、记录执行过程日志、发送邮件等功能,应该可以与持续集成框架结合。

写了个Demo,我把它叫做QTRunnerVBS脚本如下:

LogFile = "Logs/QTRunnerLog" '设置Log文件路径及文件名,可从命令行传入,需改为:Set logFileObj=GetLogObj(argObj(0))

Set logFileObj=GetLogObj(LogFile)

Response "--- Start a new batch task at " & Date & " " & Time

Response "Console logs are saved in " & LogFile & ".log"

' 从配置文件读入各种参数

Set ConfigParameters = CreateObject("Scripting.Dictionary")

ConfigFile = "config.ini"

ReadTestsFromConfigFile ConfigFile , ConfigParameters

Response "Reading Test Configurations From " & ConfigFile

' 运行测试

RunTest

CloseLogObj logFileObj

' 发送Email

SendMail LogFile & ".log"

'----------------------------------------------------------------------------------

' 读取配置文件

Function ReadTestsFromConfigFile( ByVal ConfigFile , ByRef ConfigParameters )

Set GetParameters = ConfigParameters

Dim fso, f, lineStr, isValid

Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FileExists(ConfigFile) Then

Response ConfigFile & " not found"

Exit Function

End If

Dim TestCount

TestCount=0

Set f=fso.OpenTextFile(ConfigFile,1,False) 'Open file for read, if not existed, don't created it.

Do While f.AtEndOfStream <> True

lineStr = f.ReadLine()

lineStr=Trim(lineStr)

If lineStr<>"" Then 'not empty line

If InStr(1,lineStr,"#") = 1 Then 'begin with "#"

TestCount = TestCount + 1

TestPathStr=Trim(Right(lineStr,Len(lineStr)-1))

GetParameters.Add TestCount, TestPathStr

ElseIf InStr(1,lineStr,"ResultPath=") = 1 Then

ResultPathStr = Trim(Right(lineStr,Len(lineStr)-11))

GetParameters.Add "ResultPath", ResultPathStr

ElseIf InStr(1,lineStr,"smtpserver=") = 1 Then

smtpserver = Trim(Right(lineStr,Len(lineStr)-11))

GetParameters.Add "smtpserver", smtpserver

ElseIf InStr(1,lineStr,"sendusername=") = 1 Then

sendusername = Trim(Right(lineStr,Len(lineStr)-13))

GetParameters.Add "sendusername", sendusername

ElseIf InStr(1,lineStr,"sendpassword=") = 1 Then

sendpassword = Trim(Right(lineStr,Len(lineStr)-13))

GetParameters.Add "sendpassword", sendpassword

ElseIf InStr(1,lineStr,"Email_Address=") = 1 Then

Email_Address = Trim(Right(lineStr,Len(lineStr)-14))

GetParameters.Add "Email_Address", Email_Address

End If

End If

Loop

f.Close

GetParameters.Add "TestCount", TestCount

Set ReadTestsFromConfigFile = GetParameters

End Function

' 通过AOM调用QTP执行测试

Function RunTest

Dim qtApp

Dim qtTest

Dim qtResultsOpt

stime = Now

sdate = Year(stime) & "." & Month(stime) & "." & Day(stime) & "_" & Hour(stime) & "." & Minute(stime) & "." & Second(stime)

Set qtApp = CreateObject("QuickTest.Application")

qtApp.Launch

qtApp.Visible = True

Response "Launching QTP..."

TestCount = ConfigParameters.Item("TestCount")

For I=1 To TestCount

TestPath = ConfigParameters.Item(I)

arr = Split(TestPath,";")

testfile = arr(0)

qtApp.Open testfile, True

Set qtTest = qtApp.Test

Response "-------------------------"

Response "Opening Test " & arr(0)

Set oParams = qtApp.Test.ParameterDefinitions.GetParameters()

If UBound(arr) = 1 Then

ParamArr = Split(arr(1),",")

paramCount = UBound(ParamArr)

For K=0 to paramCount

oParam = Split(ParamArr(K),"=")

ParamName = oParam(0)

ParamValue = oParam(1)

oParams.Item(ParamName).Value = ParamValue

Next

End If

ResultPath = ConfigParameters.Item("ResultPath") & "/" & sdate & "/" & qtTest.Name

Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions")

qtResultsOpt.ResultsLocation = ResultPath

Response "The Result of Test " & testfile & " will be save in " & ResultPath

qtTest.Run qtResultsOpt, True, oParams ' Run the test

Response "Runing Test " & testfile

Response testfile & "End Running With " & qtTest.LastRunResults.Status & "Status"

Response "Parameter List:"

For P = 1 to oParams.Count

Response oParams.Item(P).Name & "=" & oParams.Item(P).Value

Next

qtTest.Close

Response "Closing Test " & testfile

Response "-------------------------"

Next

qtApp.Quit

Set oParams = Nothing

Set qtResultsOpt = Nothing

Set qtTest = Nothing

Set qtApp = Nothing

End Function

' 写日志

Function Response(ByVal msg)

logFileObj.WriteLine Date & " " & Time & ": " & msg

If isRunInCmd Then

WScript.Echo Date & " " & Time & ": " & msg

End If

End Function

' 创建日志文件

Function GetLogObj(ByVal cfilePath)

Dim fso, runtimeLog

Set fso = CreateObject("Scripting.FileSystemObject")

If Not fso.FileExists(cfilePath) Then

fso.CreateTextFile(cfilePath)

End If

runtimeLog=cfilepath & ".log"

Set GetLogObj = fso.OpenTextFile(runtimeLog, 8, True) 'open file for appending.

End Function

' 关闭日志文件

Function CloseLogObj(ByVal cfile)

cfile.Close

End Function

' 发送邮件

Function SendMail(LogFile)

Set oMessage=WScript.CreateObject("CDO.Message")

Set oConf=WScript.CreateObject("CDO.Configuration")

Set fso = CreateObject("Scripting.FileSystemObject")

'创建CDO.Configuration对象后,需要设置邮件服务器的端口、用户帐号等相关信息

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing")=2

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver")=ConfigParameters.Item("smtpserver")

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/serverport")=25

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate")=1

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername")=ConfigParameters.Item("sendusername")

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword")=ConfigParameters.Item("sendpassword")

oConf.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl")=0

oConf.Fields.Update()

'通过CDO Message对象设置邮件主题、附件、发送人等信息

oMessage.Configuration = oConf

oMessage.To = ConfigParameters.Item("Email_Address")

oMessage.From = ConfigParameters.Item("sendusername")

oMessage.Subject = "QTRunner Notification"

file = fso.GetAbsolutePathName(LogFile)

Set fso = Nothing

oMessage.AddAttachment( file )

TextBody = "QTRunner Finish! See attachment for logs."

oMessage.TextBody = TextBody

oMessage.Send()

End Function

配置文件格式如下:

#D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test1;DBType=SQLServer2000,DBName=Pubs,UserID=sasa,Password=123456

#D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test2

ResultPath=D:/Automation Framworks/RunTest/QTRunner_VBS/TestResults

smtpserver=smtp.126.com

sendusername=allencnj@126.com

sendpassword=XXXXXX

Email_Address=allencnj@126.com,testing_is_believing@126.com

生成的日志文件如下:

2009-12-19 12:29:55: --- Start a new batch task at 2009-12-19 12:29:55

2009-12-19 12:29:55: Console logs are saved in Logs/QTRunnerLog.log

2009-12-19 12:29:55: Reading Test Configurations From config.ini

2009-12-19 12:30:07: Launching QTP...

2009-12-19 12:30:10: -------------------------

2009-12-19 12:30:10: Opening Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test1

2009-12-19 12:30:10: The Result of Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test1 will be save in D:/Automation Framworks/RunTest/QTRunner_VBS/TestResults/2009.12.19_12.29.55/Test1

2009-12-19 12:30:13: Runing Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test1

2009-12-19 12:30:13: D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test1End Running With PassedStatus

2009-12-19 12:30:13: Parameter List:

2009-12-19 12:30:13: DBName=Pubs

2009-12-19 12:30:13: DBType=SQLServer2000

2009-12-19 12:30:13: Password=123456

2009-12-19 12:30:13: Result=True

2009-12-19 12:30:13: UserID=sasa

2009-12-19 12:30:15: Closing Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test1

2009-12-19 12:30:15: -------------------------

2009-12-19 12:30:17: -------------------------

2009-12-19 12:30:17: Opening Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test2

2009-12-19 12:30:17: The Result of Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test2 will be save in D:/Automation Framworks/RunTest/QTRunner_VBS/TestResults/2009.12.19_12.29.55/Test2

2009-12-19 12:30:20: Runing Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test2

2009-12-19 12:30:20: D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test2End Running With PassedStatus

2009-12-19 12:30:20: Parameter List:

2009-12-19 12:30:22: Closing Test D:/Automation Framworks/RunTest/QTRunner_VBS/Tests/Test2

2009-12-19 12:30:22: -------------------------

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值