基于Excel的TestComplete关键字框架

TestComplete在TC7之后逐渐支持关键字脚本开发,但是在之前的版本是没有关键字视图的。

 

用Excel存储关键字是很多关键字框架流行的做法,在TestComplete中也可以实现。

 

首先在Excel中存储关键字:

Object_Name

Object_Reference

Parent_Object

Description

Notepad

Sys.Process("Notepad")

 

Notepad Application

Editor

Window("Notepad", "*", 1).Window("Edit", "", 1)

Notepad

Editor for Notepad

ChangedDialog

Window("#32770", "Notepad", 1)

Notepad

Do you want to save the changes dialog

NoButton

Window("Button", "&No", 2)

ChangedDialog

No Button on the save changes dialog

 

然后在TC脚本中编写关键字驱动脚本,读取Excel数据。

 

下面是完整的框架脚本(VBScript):

 

Dim ObjectMapStorage

 

Class ObjectMap

  Private m_TestObject

  Private m_ObjectReference

  Private m_ParentObject

  Private m_ObjectInfo

 

  Public Property Get TestObject

   TestObject = m_TestObject

  End Property

  Public Property Get ObjectReference

   ObjectReference = m_ObjectReference

  End Property

  Public Property Get ParentObject

   ParentObject = m_ParentObject

  End Property

  Public Property Get ObjectInfo 

   ObjectInfo = m_ObjectInfo

  End Property

  

  Public Property Let TestObject(Value)

    if (Value <> m_TestObject) Then

      if ObjectMapStorage.Exists(m_TestObject) Then

        ObjectMapStorage.Remove(m_TestObject)

      end if

      if ObjectMapStorage.Exists(Value) Then

        ObjectMapStorage.Remove(Value)

      end if

      m_TestObject = Value

      Call ObjectMapStorage.Add(m_TestObject,me)

    End if

  End Property

  Public Property Let ObjectReference(Value) 

   m_ObjectReference = Value

  End Property

  Public Property Let ParentObject(Value)

   m_ParentObject = Value

  End Property

  Public Property Let ObjectInfo(Value)  

   m_ObjectInfo = Value

  End Property

   

  Function GetTestCompleteObject

     Dim S

     if (VarType(ParentObject) = varNull)  Then

       S = ObjectReference

     Else

       If not ObjectMapStorage.Exists(ParentObject) then

         Log.Error("Unable to find parent [" & ParentObject & "] of object [" & TestObject & "]")

         Set GetTestCompleteObject = Utils.CreateStubObject

         Exit Function

       End If 

       Dim ParentObjMapItem

       Set ParentObjMapItem  = ObjectMapStorage.Item(ParentObject)

       Dim ParentObj

       Set ParentObj = ParentObjMapItem.GetTestCompleteObject

       S = ParentObj.FullName + "."  + ObjectReference

     end if   

     Set GetTestCompleteObject = Eval(S)

  End Function

 

End Class

 

Function GetTestCompleteObject(ObjectName)

  if ObjectMapStorage.Exists(ObjectName) Then

    Dim Obj

    Set Obj = ObjectMapStorage.Item(ObjectName)

    Set GetTestCompleteObject = Obj.GetTestCompleteObject

  Else

    Log.Error("Object Does not exist [" & ObjectName & "]")

    Set GetTestCompleteObject = Utils.CreateStubObject

  End if

End Function

 

Sub ReadObjectMap(ObjectMapExcelFile, Sheet)

  Set ObjectMapStorage = Sys.OleObject("scripting.dictionary")

  Set DDTDriver = DDT.ExcelDriver(ObjectMapExcelFile, Sheet)

  While not DDTDriver.EOF

    Dim Obj

    Set Obj = new ObjectMap

    Obj.TestObject = DDTDriver.Value("Object_Name")

    Obj.ObjectReference = DDTDriver.Value("Object_Reference")

    Obj.ParentObject = DDTDriver.Value("Parent_Object")

    Obj.ObjectInfo = DDTDriver.Value("Description")   

    DDTDriver.Next

  WEND

End Sub

 

 

Sub TestObjectMap

 

   Set ObjectMapStorage = Sys.OleObject("scripting.dictionary")

 

   Dim Obj

  

   Set Obj = new ObjectMap

   Obj.ObjectReference = "Sys.Process(""Notepad"")"

   Obj.TestObject = "Notepad"

  

  

  

   Set Obj1 = new ObjectMap

   Obj1.ObjectReference = "Window(""Notepad"", ""*"", 1)"

   Obj1.TestObject = "Notepad_Main_Window"

   Obj1.ParentObject = "Notepad"

  

  

  

   Dim ObjChild

   Set ObjChild = new ObjectMap

   ObjChild.ObjectReference = "Window(""Edit"")"

   ObjChild.TestObject = "Notepad_Edit"

   ObjChild.ParentObject = "Notepad_Main_Window"

  

   Set Temp = ObjChild.GetTestCompleteObject

End Sub

 

 

 

Sub TestReadObjectMap

 Call  ReadObjectMap(Files.FileNameByName("ObjectMap.xls"),"Sheet1")

  GetTestCompleteObject("Editor").Keys("TestComplete")

  GetTestCompleteObject("Dummy")

End Sub 

 

 

参考:

《Simple Keyword Framework with TestComplete - Part 1 - The object map》

http://www.theholtons.info/eric/post/2008/05/Simple-Keyword-Framework-with-TestComplete---Part-1---The-object-map.aspx

 

http://blog.csdn.net/Testing_is_believing/archive/2008/06/27/2593103.aspx

 

 

 

posted on 2010-05-07 09:53  TIB  阅读(1390)  评论(0编辑  收藏  举报

导航