QTP学习记录(QTP PLUS等内容)___20100316

上一篇 / 下一篇  2010-03-16 18:02:06 / 个人分类:QTP学习历程

    有好几天没有更新自己的学习小结了.今天把最近几天的收获记录如下:

1、QTP Code Sample plus(转)

   1)在网上看到这资料的时候,我还不知道原来plus有这么多的好处。自己按照找到资料试了下,使用TXT文件编辑扩展名为MST的文件ACTION的模板放到QTP安装目录的DAT下,然后重启QTP。每一次新建ACTION的时候都会自动将所编辑的ACTION TEMPLATE加载到对应的ACTION中。对于这一点,我觉得非常的有用,因为如果当我们所测的系统比较庞大的时候,我也比较喜欢在维护脚本中的过程中增加更多的注释(呵呵,可能是上学的时候养成记笔记的习惯),这样的好处是利于自己在温习和别人看的时候也一目了然。确实是一个不错的东东。

   2)关于通过设置测试报告里只显示error的信息。帮助中说:修改安装目录下bin\QTReport.ini文件,增加以下内容:
[FilterDialog]
ReportAppDefaultFilter=1 # for error only
ReportAppDefaultFilter=3 # shows all messages (default)

  我个人不太赞成这种修改方式,因为修改之后测试报告中只在ACTION前面有对应的标识失败,并不会像修改前一样将相关详细记录和信息罗列出来。所以不太喜欢这样的修改方式,我将bin\QTReport.ini文件修改后我又改回系统默认的。

  3)Function Libraries

    关于QTP PLUS带的这一些FUNCTION LIBRARIES,确实是非常有用的,虽然目前我还处于初级阶段,但看到这些FUNCTION,留着以后肯定也是有用的。呵呵。

    Plus的帮助中提供了一些常用的Function,把这些function copy到文本编辑器中保存为.vbs文件,并添加到Resources中就可以直接调用了,或直接copy到你的action中,就可以在当前的action中调用。更推荐第一种方法,所有的action都可以调用。
A)文件操作相关的function,如下,望名则可生意:
Function CreateFile(sFilename, bOverwrite)

Function OpenFile(sFilename, iomode, create)

Function AppendToFile(sFilename, sLine)

Function WriteToFile(sFilename, sLine)

B)Function NormalizeString(OrgStr); (将字符串变成regular express
C)GlobalDictionary的使用,这是另外一种可以共享全局变量的方法,在所有的action中,包括localexternal action中都可以访问。
D)使用文件系统相关的function:
Function ReadLineFromFile (byref FileRef);
Sub FileDelete ( FilePath);
Function FileCompare (byref FilePath1, byref FilePath2, byref FilePathDiff, ignoreWhiteSpace);
Function CheckFileExists (FilePath)
E)webtable相关的function:
Function ItemByKeyColumn():
根据table中某列的值,得到同一行中另一列的对象。(这个功能非常有用。)
Function ObjectsByMicClass(Obj, micClass):
得到table中所有的micClass类型的对象集合。
4)关于以下这一段转的内容,我没有试过,但先放着,我相信一定会有用。

A)、Automation Generator Utility
    添加一系列动作,然后自动完成。如:启动QTP,然后执行test1, test2, test3...,最后关闭QTP,还可以连接或断开Quality center.
值得注意的是,每个test都可以分别指定test result文件,这样可以把所有test result指定到同一个目录下,所有test执行完成后,用Test Result Viewer就可以快速的查看测试报告。
   B)、External Action Call Modifier Utility
    外部Action调用修改工具。当删除一个Reusable action前,如果没有先删除其他test中对它的调用,则打开其他test时,会提示找不到某某action,这种情况下启用该工具,工具会列出test下所有调用的外部action(如果调用的action是使用相对路径,则不会列出来),如果外部action找不到,会用红色的问号表示,删除它并保存后就OK了。
也可以在此处修改外部action的来源,修改后原来的action parameter仍会保留。
   C)Repository Merge Utility
   合并多个对象库文件中的对象,如果出现冲突,可以选择忽略,或手工合并,或自动合并。 对象库文件是Action目录下的Resource.mtr文件。
   D)Report Analyzer
    Test Result
的另一个查看工具,提供了一些过滤条件,比如只查看failed step,或只查看checkpoints,或只查看某个action
2、关于DataTable的一些 使用

1)DataTable的Export方法。将正在运行的DataTable的数据导入到一个指定的位置的文件中。我在使用过程中发现,如果使用Export将DataTable的数据导出到文件,如果是TXT文件,则必须先在对应的目录下建立一个空的TXT文件.如果是导到XML和EXCEL文件,则可以不需要先建立对应的文件.但是有一个问题,使用EXPORT导成XML和TXT文件时都是乱码.要打开这些文件可以通过选择XML和TXT文件以EXCEL的方式打开即可查看到所有DATATABLE的数据内容。

2)取DataTable中某一个单元格的值。这个可以直接使用DataTable的Value属性,其具体的语法如下,这个可以通过QTP的帮助文档查找到。同时也可以往DataTable中写入对应的值,如下的Set the value.

DataTable.Value(ParameterID[,SheetID])

or

DataTable(ParameterID[,SheetID])

To set the value:

DataTable.Value(ParameterID[,SheetID])=NewValue

or

DataTable(ParameterID[, SheetID])=NewValue

   3)DataTable的GetCurrentRow方法.取DataTable的当前列。

PS:在今天的实践过程中我是想取DataTable中第一行第一列的值,结果我使用了DataTable的GetCurrenRow方法,怎么也取不到对应的值,后来再发现自己用错了,应该是使用DataTable的属性Value

3、参数化密码(转)。

   当我们对密码进行参数化的时候,可以直接在DataTable中写明文,使用SetSecure方法,而不需要使用Set方法,就可以了。通过实践确实如此。

 webedit("txtpass").setsecure"sdsdf...."
如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set。

4、防程序中断方法.前不久看到同事在脚本的开头就加了“On error resume next"语句,当时觉得纳闷,看着即不像注释,不知道是什么,今天终于原来是防程序中断方法。其意思是该语句开始,遇到错误时程序不会中止,也不会出现错误提示,将继续运行。作用范围直至程序结束或语句所在函数等结束。我想这个在我们的自动化测试过程中应该是非常有用的一个东东。

On error resume next

On error go to handle

5、关于"IS..."的Function.(QTP Help)

1) IsArray 判断是否是数组,相关例子如下:

Dim MyVariable
Dim MyArray(3)
MyArray(0) = "Sunday"
MyArray(1) = "Monday"
MyArray(2) = "Tuesday"
MyVariable =IsArray(MyArray)' MyVariable contains "True".

2)Iscoonected 判断QTP是否连接到QC。(PS:由于HELP中的代码太多,不贴此处,另外也还需要自己好好消化

3)IsDate 判断是否是合法的日期类型。相关例子如下:

Dim MyDate, YourDate, NoDate, MyCheck
MyDate = "October 19, 1962": YourDate = #10/19/62#: NoDate = "Hello"
MyCheck =IsDate(MyDate)' Returns True.
MyCheck =IsDate(YourDate)' Returns True.
MyCheck =IsDate(NoDate)' Returns False.
4)IsEmpty判断是否初始化。相关例子如下:
Dim MyVar, MyCheck
MyCheck =IsEmpty(MyVar)' Returns True.
MyVar = Null   ' Assign Null.
MyCheck =IsEmpty(MyVar)' Returns False.
MyVar = Empty   ' Assign Empty.
MyCheck =IsEmpty(MyVar)' Returns True.
 
5)IsNull判断是否为空值。相关例子如下:
Dim MyVar, MyCheck
MyCheck =IsNull(MyVar)' Returns False.
MyVar = Null   ' Assign Null.
MyCheck =IsNull(MyVar)' Returns True.
MyVar = Empty   ' Assign Empty.
MyCheck =IsNull(MyVar)' Returns False

6)IsNumeric判断是否是数字值。相关例子如下:

Dim MyVar, MyCheck
MyVar = 53   ' Assign a value.
MyCheck =IsNumeric(MyVar)' Returns True.
MyVar = "459.95"   ' Assign a value.
MyCheck =IsNumeric(MyVar)' Returns True.
MyVar = "45 Help"   ' Assign a value.
MyCheck =IsNumeric(MyVar)' Returns False.
7)IsObject判断是否是一个功能对象。相关例子如下:
Dim MyInt, MyCheck, MyObject
Set MyObject = Me
MyCheck =IsObject(MyObject)' Returns True.
MyCheck =IsObject(MyInt)' Returns False.
 
8)IsReady 判断设备是否准备就绪。使用VBScript实现如下:

Function ShowDriveInfo(drvpath)
   Dim fso, d, s, t
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set d = fso.GetDrive(drvpath)
   Select Case d.DriveType
      Case 0: t = "Unknown"
      Case 1: t = "Removable"
      Case 2: t = "Fixed"
      Case 3: t = "Network"
      Case 4: t = "CD-ROM"
      Case 5: t = "RAM Disk"
   End Select
   s = "Drive " & d.DriveLetter & ": - " & t
   Ifd.IsReadyThen
      s = s & "<BR>" & "Drive is Ready."
   Else
      s = s & "<BR>" & "Drive is not Ready."
   End If
   ShowDriveInfo = s
End Function

9)IsRootFolder 判断是否是根目录。相关例子如下:

[VBScript]Function DisplayLevelDepth(pathspec)
   Dim fso, f, n
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFolder(pathspec)
   If f.IsRootFolder Then
      DisplayLevelDepth = "The specified folder is the root folder."
   Else
      Do Untilf.IsRootFolderSet f = f.ParentFolder
         n = n + 1
      Loop
      DisplayLevelDepth = "The specified folder is nested " & n & " levels deep."
   End If
End Function
10)ISRunning 判断打开的测试中业务组件当前是否是运行状态

Description

Indicates whether the open test or business component is currently running.

Syntax

object.IsRunning
 
ArgumentDescription
objectAn expression evaluating to an object of typeTest.

Value Type

Read-only.A Boolean value.

Possible Values

 
  • True--The test or component is running.
  • False--The test or component is not running


   PS:

     每天进步一点点是卓越的开始,

     每天创新一点点是领先的开始,

     每天多做一点点是成功的开始。

     I believe I can fly.^_^

 


TAG:

 

评分:0

我来说两句

Open Toolbar