QTP学习小记___20100323

上一篇 / 下一篇  2010-03-23 15:59:55 / 个人分类:QTP学习历程

  有好几天都没有更新日志了.有点懒。最近这两天有在继续我的QTP历程。结合之前网上的一些例子,终于很认真的把QTP相关编程的常用实例详解看完。结合一些实际操作,记录有点杂七杂八的东东。

1、Option Explicit(这个是从百科中查找到的,因为在实例中查看到这东东,将其贴在这里)

Option Explicit 语句 在模块级别中使用,强制显式声明模块中的所有变量。语法Option Explicit说明如果使用,Option Explicit 语句必须写在模块的所有过程之前。如果模块中使用了 Option Explicit,则必须使用 Dim、Private、Public、ReDim 或 Static 语句来显式声明所有的变量。如果使用了未声明的变量名在编译时间会出现错误。如果没有使用 Option Explicit 语句,除非使用 Deftype 语句指定了缺省类型,否则所有未声明的变量都是 Variant 类型的。注意 使用 Option Explicit 可以避免在键入已有变量时出错,在变量的范围不是很清楚的代码中使用该语句可以避免混乱。
  编译器的默认设置将是 Option Explicit On。
  示例
  本示例使用 Option Explicit 语句强制所有变量的显式声明。试图使用未声明的变量将导致编译时错误。Option Explicit 语句只用在模块级。
  Option Explicit ' Force explicit variable declaration.
  Dim MyVar As Integer ' Declare variable.
  MyInt = 10 ' Undeclared variable generates error.
  MyVar = 10 ' Declared variable does not generate error.
  说通俗点,就是为了避免混乱,使用 Option Explicit 之后,必须对变量进行声明才可以使用!
  举个简单的例子:
  <script. language="vbscript">
  < !--
  Option Explicit \' 要求在脚本中声明所有的变量
  Dim Mystring
  Mystring="This is my string"
  -- >
  < /script>

  PS:很多高人都说当我们的程序代码很多的时候,最好还是使用Option Explicit 进行强制声明。这样出问题的时候更方便查找。

2、关于Datatable的import方法。

  也就是在脚本运行过程中,导入一个EXCEL文件中的值至DATATABLE中,但在在导入的过程中切记,EXCEL的格式需要与DATATABLE的字段名一致。同时我在运行过程中还发现,假设DATATABLE中有五条数据,如果我在运行过程中进行判断,当ROW=2的时候导入数据,则我的脚本将只执行两行数据就结事了,余下的五条数据不再执行。另外,当我们导入的EXCEL中是多个SHEET有数据的情况,我们不能用DATATABLE的IMPORT方法,有专门的一个IMPORTSHEET。其相关语句如下:

DataTable.Import(FileName)

DataTable.ImportSheet(FileName,SheetSource,SheetDest)

EG:

DataTable.Import ("C:\flights.xls")

DataTable.ImportSheet "C:\name.xls" ,1 ,"name"

3、关于函数SPLIT:返回基于 0 的一维数组,其中包含指定数目的子字符串。

语法
Split(expression[, delimiter[, count[, start]]])
Split 函数的语法有以下参数:

参数 描述
expression 必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
delimiter 可选。用于标识子字符串界限的字符。如果省略,使用空格 ("") 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
count 可选。被返回的子字符串数目,-1 指示返回所有子字符串。
compare 可选。指示在计算子字符串时使用的比较类型的数值。有关数值,请参阅“设置”部分。

PS:关于SPLIT函数,通常都用于字符串的拆分,根据关键字符拆分、截取数据如下所示:

Dim nowdate,arydate

'获取系统日期

nowdate=date()

arydate=split(nowdate,"-")

'MsgBox("当前日期为:"&arydate(0)&""&arydate(1)&""&arydate(2)&"")

'循环将年、月、日分别打印到测试执行报告中(LBound(数组名):取数组下标minUBound(数组名):取数据上标max

For i=LBound(arydate) to UBound(arydate)

Reporter.ReportEvent micPass, "testing", "返回值数组中的元素[" & i & "]"&arydate(i)

Next

   在如上的例子中,还有两个函数,即是LBOUND()和UBOUND(),其中LBOUND()是返回数组的最小可用下标值,而UBOUND()是返回数组的最大可用下标值。

关于这两个函数的释义如下:

LBound函数。返回指定数据维的最小可用下标。
语法
LBound(arrayname[, dimension])
LBound 函数的语法有以下参数:
参数 描述
arrayname 数组变量名,遵循标准变量命名约定。
dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2 表示第二维,以此类推。如果省略 dimension 参数,默认值为 1。
说明
LBound 函数与 UBound 函数共同使用以确定数组的大小。使用 UBound 函数可以找到数组某一维的上界。
任一维的默认下界都是 0。
UBound函数。返回指定数组维数的最大可用下标。
语法
UBound(arrayname[, dimension])
UBound 函数的语法有以下参数:
参数 描述
arrayname 必选。数组变量名,遵循标准变量命名约定。
dimension 可选。指定返回哪一维上界的整数。1 表示第一维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1。
说明
UBound 函数与 LBound 函数一起使用,用于确定数组的大小。使用 LBound 函数可以确定数组某一维的下界。
所有维的默认下界均为 0。对于有这样维数的数组,UBound 函数返回以下结果:
Dim A(100,3,4)
语句 返回值
UBound(A, 1) 99
UBound(A, 2) 2
UBound(A, 3) 3

另外,在以上例子中还有一个REPORTER语句行。关于REPORTER相关释义如下:

ReportEvent Method

Description

Reports an event to the test results.

Syntax

Reporter.ReportEventEventStatus,ReportStepName,Details[,Reporter]

Argument

Type

Description

EventStatus
Number or pre-defined constant
Status of the report step:
0ormicPass:Causes the status of this step to be passed and sends the specified message to the report.
1ormicFail:Causes the status of this step to be failed and sends the specified message to the report. When this step runs, the test fails.
2ormicDone:Sends a message to the report without affecting the pass/fail status of the test.
3ormicWarning:Sends a warning message to the report, but does not cause the test to stop running, and does not affect the pass/fail status of the test.
ReportStepName
String
Name of the intended step in the report (object name).
Details
String
Description of the report event. The string will be displayed in the step details frame. in the report.
Reporter
N/A
Not in use.

Example

The following examples use theReportEventmethod to report a failed step.

Reporter.ReportEvent 1, "Custom Step", "The user-defined step failed."

or

Reporter.ReportEvent micFail, "Custom Step", "The user-defined step failed."

如上例子的Reporter的结果为:

返回值数组的元素[0]:2010

返回值数组中的元素[1]:3

返回值数组中的元素[2]:23

4、关于函数DATEDIFF():返回两个日期之间的时间间隔。

描述
返回两个日期之间的时间间隔。
语法
DateDiff(interval,date1,date2[,firstdayofweek[,firstweekofyear]])

DateDiff函数的语法有以下参数:

参数描述
interval必选。字符串表达式,表示用于计算date1date2之间的时间间隔。有关数值,请参阅“设置”部分。
date1, date2必选。日期表达式。用于计算的两个日期。
firstdayofweek可选。指定星期中第一天的常数。如果没有指定,则默认为星期日。有关数值,请参阅“设置”部分。
firstweekofyear可选。指定一年中第一周的常数。如果没有指定,则默认为 1 月 1 日所在的星期。有关数值,请参阅“设置”部分。

设置
interval参数可以有以下值:

设置描述
yyyy
q季度
m
y一年的日数
d
w一周的日数
ww
h小时
n分钟
s

firstdayofweek参数可以有以下值:

常数描述
vbUseSystem0使用区域语言支持 (NLS) API 设置。
vbSunday1星期日(默认)
vbMonday2星期一
vbTuesday3星期二
vbWednesday4星期三
vbThursday5星期四
vbFriday6星期五
vbSaturday7星期六

firstweekofyear参数可以有以下值:

常数描述
vbUseSystem0使用区域语言支持 (NLS) API 设置。
vbFirstJan11由 1 月 1 日所在的星期开始(默认)。
vbFirstFourDays2由在新年中至少有四天的第一周开始。
vbFirstFullWeek3由在新的一年中第一个完整的周开始。

说明
DateDiff函数用于判断在两个日期之间存在的指定时间间隔的数目。例如可以使用DateDiff计算两个日期相差的天数,或者当天到当年最后一天之间的星期数。

要计算date1date2相差的天数,可以使用“一年的日数”(“y”)或“日”(“d”)。当interval为“一周的日数”(“w”)时,DateDiff返回两个日期之间的星期数。如果date1是星期一,则DateDiff计算到date2之前星期一的数目。此结果包含date2而不包含date1。如果interval是“周”(“ww”),则DateDiff函数返回日历表中两个日期之间的星期数。函数计算date1date2之间星期日的数目。如果date2是星期日,DateDiff将计算date2,但即使date1是星期日,也不会计算date1

如果date1晚于date2,则DateDiff函数返回负数。

firstdayofweek参数会对使用“w”和“ww”间隔符号的计算产生影响。

如果date1date2是日期文字,则指定的年度会成为日期的固定部分。但是如果date1date2被包括在引号 (" ") 中并且省略年份,则在代码中每次计算date1date2表达式时,将插入当前年份。这样就可以编写适用于不同年份的程序代码。

interval为“年”(“yyyy”)时,比较 12 月 31 日和来年的 1 月 1 日,虽然实际上只相差一天,DateDiff返回 1 表示相差一个年份。

EG:

a=datediff("h",now,"2009-12-12")
b=datediff("yyyy",now,"2009-12-12")
c=datediff("q",now,"2009-12-12")
d="     我想离开啊      "
e=trim(d)
print  "现在的日期为:"&now
Print "现在与2009/12/12相差时间为:"&a
Print "现在与2009/12/12相差年为:"&b
Print "相差季度为:"&c
Print d
Print e

运行结果为:

现在的日期为:2010-3-23 16:28:44
现在与2009/12/12相差时间为:-2440
现在与2009/12/12相差年为:-1
相差季度为:-1
     我想离开啊     
我想离开啊

看完了QTP常用编程详解,真正地很认真的去深入接触QTP才一个多月的时候。其实我并不太清楚在实际的项目过程中会不会用到它,更或许完全使用它。虽然未知因素太多,但多多益善吧。每天进步一点点是卓越的开始,好好努力。另外发现,自己得好好把VB的帮助文档好好地看看。努力努力。


TAG:

 

评分:0

我来说两句

Open Toolbar