心念旧安,夙夜忧叹。

在QTP中如何使用Class(类)

上一篇 / 下一篇  2007-08-04 23:10:36 / 精华(3) / 个人分类:原创文章

查看( 15948 ) / 评论( 92 )
大家知道VB是面向对象的,其中Class(类)是一个“模板”,对象是由它而创建的。类中的代码描述了从该类创建的对象的特性 (attribute) 和行为。
7t6t nc |%n0虽然Class(类)不是对象,但是它的确有定义其特性 (attribute) 的设计时属性 (property) 和定义其行为的事件。51Testing软件测试网ZO.dC-` }+d5^3k
类里的数据,是相对于类实例(也就是,由类创建的每一对象)而独立存在的。
x p i3HA0c?Y^ Hfx z0也就是说,它存在于程序的存活期中;而类实例中的数据只存在于对象的存活期,它随对象的创建而创建,随对象的撤消而消失。
2pF^Bp!\et;s+J0在编程的时候使用Class正是符合了OO(面向对象封装)的编程原则,我们在使用QTP进行自动化测试编程的时候也要时刻牢记这一原则,进行脚本设计。
0z dpL0`+\}n#i0然而,如何在QTP中使用Class呢,以下是本人写的一个在QTP中使用Class的例子,大家直接把它粘贴到QTP的Expert View中就能看到效果了:)
Jxdtq%?2J0
4ig}F i051Testing软件测试网{l G(k-[2X
'****************************************************************
%Z%i0U!EJ0Call Test
b[SM{{0
_V^g-` h w&I1j#E0Class Tester51Testing软件测试网nL'[&Jwi4{-W&i*@

*RuY4^| r0        Dim mvarTesterName,mvarAge,mvarGender       51Testing软件测试网 pk7zk:U!]^9Y
       51Testing软件测试网:Y*f+m4\,n:e7K
        Sub Class_Initialize   '构造函数51Testing软件测试网6U[.uw B
               MsgBox  "接下来,大家欢迎新同事的到来!"51Testing软件测试网S1@5nC*Ik~
        End Sub
Z oH'Yh)L|:W8}[0       
R5Q*u(c+Lrxe0        Sub Class_Terminate  '析构函数
B?x/Rx v8U,h0                If mvarGender Then51Testing软件测试网S+}(NW wcXN N
                    MsgBox "很遗憾," & mvarTesterName & "先生脱离了测试行业!"
/y^n0xf2q1E0                Else
Y5N W0Xh _ ?k0                    MsgBox "很遗憾," & mvarTesterName & "女士脱离了测试行业!"51Testing软件测试网2c {0y P"A#q
                End If
$xW;E.{Gn0        End Sub
}\c_Px }2_0
$N0r$N;H*ox8X xJ0        Sub Test(ByVal ProjectName)51Testing软件测试网 Nh qY0Xh#A
                MsgBox mvarTesterName & "正在加班加点的测试" & ProjectName & "呢!"51Testing软件测试网 ~P1G:p?l
        End Sub51Testing软件测试网Uo&qiz%D
       
m{3^Yz,Zk0        Sub Eat(ByVal food)51Testing软件测试网:Ge,\/Z9hC
                MsgBox mvarTesterName & "正在吃" & food & "呢,好爽啊!"
o4RX?7? Um0        End Sub
D.?;j h/P"{0       51Testing软件测试网_-V$@8Q#a4m0mZ9o1m
        Property Let Gender(ByVal vData)
5]*qJ}ms!O~@0            mvarGender = vData            51Testing软件测试网 {&}FjV/~ ZA%E
        End Property
Oh3R8k^&KbB0       
O4bM;i`,za4[0        Property Get Gender()
O%g3D4X3["UMr\5O0            Gender = mvarGender51Testing软件测试网r;t"_ iX.cwO8b }2g
        End Property
&WWX5@0XZ8|0       
F G rg1CT;w/z J0        Property Let Age(ByVal vData)
u:|$A|$t"Z0            mvarAge = vData51Testing软件测试网&kv)D8| L
        End Property
OByN f8n^|0       
^5Y)`J2U:VJc0        Property Get Age()51Testing软件测试网$IVsDm;@,\[$c
            Age = mvarAge
6i GB"Z!p*Whxh0        End Property51Testing软件测试网[&e)vX i x5qA`
       51Testing软件测试网Kq y-BT;V%k&y @Pi0@
        Property Let TesterName(ByVal vData)
q$`0T~0IP0a0            mvarTesterName = vData51Testing软件测试网*v$QdStHz
        End Property51Testing软件测试网H5h fK0Cn]
       51Testing软件测试网'ZO6nP x tdGFl
        Property Get TesterName()
/T(DF5nDyc?0            TesterName = mvarTesterName
rfR._\g0        End Property
6L0n5MKw:P0   
*K(L*|(r u i_1P+CP0End Class51Testing软件测试网FNu \!q-Uh1w Z+A

$h/S ~ ott!D0
&},e;[/a9]+Y_0
eq#h6\LI$l$i0Sub Test()51Testing软件测试网 YBk3P.K
        Set sb = New Tester  '创建一个对象,对象名叫somebody,它是由Tester创建出来的
!E|'@D&K0        sb.TesterName = "songfun"51Testing软件测试网 GaUn)JX
        sb.Age = 2951Testing软件测试网.]8[Sd6t h:q
        sb.Gender = True51Testing软件测试网LJPKBvk p
        sb.Eat "HagenDaz"
U c3m k R5o!v0        sb.Test "手机"
}k f6{f_~0        If sb.Gender Then
{ _V4|R'qr0                MsgBox sb.TesterName & "先生年方" & sb.Age51Testing软件测试网 M4nrL:dUa(t*[
   Else
fLE9|*t"kL.r5q4Q$T0                MsgBox sb.TesterName & "女士芳龄" & sb.Age
w \%b4Ijc{ a-h0        End If51Testing软件测试网 L/^-k6dZe}
        Set sb = Nothing51Testing软件测试网A)~UR`i z+N;]
End Sub
d;v}sVm_"v7c0'****************************************************************

TAG: 原创文章

walker1020的个人空间 walker1020 发布于2007-08-04 23:17:33
不错,没有想到 VB 还有这么强的威力。周一上班时一定要好好实验一下
不冲动是年轻人吗? wssgily 发布于2007-08-05 00:54:17
越来越深入了,关键是感觉你思想越来越宽广了.有点深邃的味道了.呵呵!
chenjie021的个人空间 chenjie021 发布于2007-08-05 10:35:40
能否介绍一下在实际运用中的例子?
大师兄--绝迹江湖 songfun 发布于2007-08-05 12:42:24
学过面向对象的人都会知道这种好处是显而易见的,我们可以封装很多咚咚到一个类里面,比如我们要操作数据库,每次都要写一段的代码去处理它,而针对数据库里的记录,又要有一段类似的代码去处理它,最后还要自己写代码断开连接,释放资源。一系列操作显得非常繁琐,如果我们把它封装到class里,那么借由它的构造函数、析构函数,以及配套的属性方法进行操作就会非常的方便了。。。
0y1[%tBHvi2`O51Testing软件测试网51Testing软件测试网 G*OvZ8Z[[
具体的例子我下次会再贴上一篇《在QTP中如何使用Class》续集sdlkfj6
Jimmyshao&Bugs Jimmyshao 发布于2007-08-05 20:03:07
8错8错的,面向对象方法还是很强的..
v_v的个人空间 v_v 发布于2007-08-05 23:17:06
宋老大说的封装思想在数据库中体现就是存储过程了 www.51testing.com@
wLM'lmf0R5}(P

这就是 OO 特点复用性。
v_v的个人空间 v_v 发布于2007-08-05 23:19:52
回复 #5 songfun 的帖子
期待续集。。。呵呵
"}E
uejPwww.51testing.com
songfun老师怎么编程这么厉害的,学了多久了啊?软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具q5Xcq-g&xi9e
哎。。。。。。程序牛差的我羡慕。sdlkfj8
jackymail的个人空间 jackymail 发布于2007-08-06 00:15:38
不错。构造和析构函数不能带参数,property set and get需要变量名称类型一致,并且不能尽兴递归或者在function中声明。可以和function一样写在表达式的右侧。
o$f-Ok7C u0x#F+H软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具类中可以声明sub和function两种类型。。。。51Testing软件测试网*_g6K'l'g0}S.Q        baa

.@GV-W-V?g`1V软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具vb要是复杂起来真的还不如不用。。。。用它就是因为他简单。。简单就不够灵活。。。灵活了就比较复杂。。。看你怎么用了。。不过vb用class感觉除非很必要的情况。
marco的个人空间 marco 发布于2007-08-06 22:24:45
恩,不错,发现新大陆了,呵呵
测火燎原--态度决定质量 ppent 发布于2007-08-06 22:41:29
“类里的数据,是相对于类实例(也就是,由类创建的每一对象)而独立存在的。也就是说,它存在于程序的存活期中”--这句话不太理解,上面的例子是否体现?
xishuai0328发布于2007-08-07 11:44:37
看到效果了
[P9_[`*ax        xj(Q中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务很期待看到在QTP中的实际应用sdlkfj2
海市蜃楼51发布于2007-08-09 15:52:47
试过了  很好玩sdlkfj5
molly-cici发布于2007-08-10 13:42:58
是很有意思,但是还是不清楚具体怎么用
kingdees的个人空间 kingdees 发布于2007-08-10 14:02:14
我总感觉qtp的代码复用功能不好用!51Testing软件测试网,O0zD Q.[6@5b1U
例如:songfun 的这个类!
-T O2?w8\e*s"T8D%dwww.51testing.com如果我想在其它测试项目中将这个类进行继承呢?好象使用引用源代码,不用用组建方式!        a%s+Ie]*O

eVL D,f
]E软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
在说VBS没有抽象类功能,无法对一些无法预先知道的类功能进行扩展!中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务(ZE%aZ$h$s8~!h%n
@Rk

测试工程在设计初期不好使用UML进行建摸,导致测试成本增加!www.51testing.com1I
iAM2P

www.51testing.com]n_ht7{} p
大家同样我的意见吗?
小鱼oO的个人空间 小鱼oO 发布于2007-08-10 14:25:03
深奥,真需要好好学习编程
kingdees的个人空间 kingdees 发布于2007-08-10 15:23:33
努力!!!!
No Logo! MarsNoNo 发布于2007-08-11 20:14:26
果然是强人
原来……!嗯!果然是锋哥!软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具%Yq%?)Q1m
继续努力。sdlkfj2中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务&QW        he-|AiIXT'^;E
我说我继续努力!!!!
大师兄--绝迹江湖 songfun 发布于2007-08-11 21:39:31
这位兄弟一定没有了解过QTP的function library sdlkfj5 中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务1T3N]+w%y)X-X
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具)fMj [.E){&S|C
你想要实现的东西对QTP来说轻而易举——就看你怎么使用了:)51Testing软件测试网*x$XR(iR!]"p
软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具.S;~]1Y ~2x`3j(e|-n C

QUOTE:

原帖由 kingdees 于 2007-8-10 14:02 发表 51Testing软件测试网
\9Fr-^)e m4gI

我总感觉qtp的代码复用功能不好用!8zI^4N&~(U;e
例如:songfun 的这个类!51Testing软件测试网F5y;n5fN6TZdd o
如果我想在其它测试项目中将这个类进行继承呢?好象使用引用源代码,不用用组建方式!
2e7Knki$`j9Q软件测试,软件测试论坛,软件测试方法,软件测试工具,软件测试流程,软件测试培训,软件测试外包,软件质量管理 ,软件缺陷跟踪,软件配置工具
.M@NtBq%X7D中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务在说VBS没有抽象类功能,无法对一些无法预先知道的类功能进行 ...

kingdees的个人空间 kingdees 发布于2007-08-12 14:24:14
我公司有个人用了5年QTP,他和我讨论过,的确QTP的function librar可以做到代码重用!也可以轻而实现!中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务7U0E(YD&Um&O
但是重用效果不理想, 无法实现在类被继承了N次后不修最原始代码实现需要的新功能!
B~2E&[piX4o"X X:aPP51Testing软件测试网他的做法是从如果新的测试需求就将代码COPY一份,然后修改!(我指的是测试框架!不是具体实现)中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务g&\ k6Q4@

CpR
] W.|,W$G+T(~&Rwww.51testing.com
写出好的测试框架在易用性,高度扩展性,高度重用性有很高的要求,我公司的产品特别庞大,涉及的面很广!每次测试时需要大量的人力去修改测试代码,最后总发现原来设计的测试框架扩张性差,导致成本增加!中国软件测试人的精神家园,介绍先进的软件测试工具、 软件测试流程和软件测试思想,定期举办软件测试沙龙,软件测试精品 资料下载,提供专业的软件测试培训服务*pz\,rM*oO
不是只要可以实现就行了!有谁有这方面的经历吗?
1`\9wLk Y51Testing软件测试网
D._u\&G)j BVM软件测试 - 软件测试论坛 - 软件缺陷跟踪 - 软件配置工具 - 测试用例设计 - Web测试 -  自动化测试工具[ 本帖最后由 kingdees 于 2007-8-12 14:29 编辑 ]
huash发布于2007-08-12 18:35:45
真是太好了,收下了,谢谢!
我来说两句

(可选)

日历

« 2024-05-16  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 454139
  • 日志数: 138
  • 图片数: 4
  • 建立时间: 2006-11-26
  • 更新时间: 2013-08-30

RSS订阅

Open Toolbar