有没有办法在VBScript中的Exit Function之前总是执行一些代码

时间:2012-04-08 13:58:00

标签: function vbscript exit qtp

我想编写一个函数,其中有多个“Exit Function”语句。在执行退出功能之前,有没有办法让我确保一些清理代码一直运行?

这是我实际上要做的事情,我想在我的测试自动化项目中设置一个标准,某个函数应该在任何函数的代码开始之前运行,并在退出函数之前运行另一个函数。有没有简单的方法呢?

2 个答案:

答案 0 :(得分:3)

由于函数中的包装函数在VBScript中并不容易(期望参数传递的问题),你应该使用一个类:

Class cWrap
  Private m_sName
  Public Function init(s)
    Set init = Me
    m_sName  = s
    WScript.Echo "*** enter", m_sName
  End Function ' init
  Private Sub Class_Terminate()
    WScript.Echo "*** leave", m_sName
  End Sub ' Class_Terminate
End Class ' cWrap

Function f1(n)
  f1 = "f1 called"
  Dim o : Set o = New cWrap.init("f1")
End Function ' f1

Function f2(n)
  f2 = "f2 called"
  Dim o : Set o = New cWrap.init("f2")
End Function ' f2

答案 1 :(得分:2)

Ekkehard.Horner的包装类非常有用,如果你有东西可以超出函数的范围,比如秒表,runstack查看器或错误对象上的异常捕获器。但是当你在函数范围内有事情要做并且包装类渲染无用时,你可以考虑使用Do Loop While False模式:

Function DoSomeMessyStuff()
    Do
        call doStuff()
        If somecondition Then Exit Do
        call doMoreStuff()
        If somecondition Then Exit Do
        call doEvenMoreStuff()
        If somecondition Then Exit Do
        call andEvenMoreStuffHere()
    Loop While False ' Always exits

    ' Finally: 
    call cleanUpTheMess()

End Function