泰然 发表于 2015-1-30 11:12:10

一个关于QTP自带Flight教学软件的自动化测试框架

A.文件介绍:
driver.vbs:框架驱动
libs\case.vbs:用于读取测试用例
libs\common.vbs:框架所用到的函数库
libs\log.vbs:用于写日志
libs\param.vbs:用于执行一个测试用例时的用例所有数据
libs\rpt.vbs:用于生成测试报告
libs\script.vbs:框架中的所有组件函数
cases\Flight.xlsx:测试用例
logs:保存日志的目录,每个月保存同一个日志我呢见
reports:保存测试报告的目录,每一分钟保存一个测试报告文件
FlightFrameWork:框架的QTP脚本
FlightFrameWork\flight.tsr:QTP脚本所调用的扩展对象库文件,QTP脚本没有自己的对象库

B.Flight.xlsx编写要求:第6点要特别注意
1.因case.vbs文件中OpenCase方法写死,用例页面的sheet必须叫"Case",函数页面的sheet必须叫"Function"
2.用例页面中,用例编号不能重复
3.用例页面中,是否测试中只能打勾表示本用例需要测试,其他都表示不需要
4.用例页面中,组件列表中是本测试用例依次调用函数页面中函数的行号,如有多个用"/"连接
5.用例页面中,输入参数的编写参照说明C
6.函数页面中,已经做好的内容行号不能调整,因为用例页面中每个用例调用的组件函数是使用行号来表示,如果函数页面中行号调整会导致用例调用函数全部错误
7.函数页面中,组件必须和script.vbs文件中每个组件函数的Do_后面名称相同,不分大小写
8.函数页面中,输入参数必须和script.vbs文件中该函数的输入参数名相同,不分大小写,如有多个用"/"连接
9.函数页面中,输出参数必须和script.vbs文件中该函数中param.PushArray方法的第1个参数值相同,不分大小写,如有多个用"/"连接

C.测试用例输入参数组合的编写要求
1.确定本测试用例依次调用哪几个函数;
2.每个函数的输入参数都分为2类,1是从测试用例中读取,2是通过其他函数输出;
3.各个函数的输入参数的值,凡是无法通过其他函数输出来获取,则都需要在测试用例输入参数组合写入该参数值,并按照函数顺序、函数参数顺序来写参数值的顺序;凡是能通过其他函数输出来获取,则不需要在测试用例输入参数组合中写入
4.如有多个用"/"连接

D.后续如何增加新的组件
1.在script.vbs文件中增加新的函数,函数名统一叫Do_xxxx,自行定义输入参数
2.函数体的最开始增加以下,用于判断函数开始执行前脚本是否已经有错,如果已经有错,则该函数无需执行;判断函数能否开始执行,如果条件不具备,则该函数无需执行
        Dim myResult
        If param.hasExcept Then
                param.setRptStatus2
                Exit Function
        End If
        If not 该函数能够执行的预置条件 Then
                myResult="Do_函数名及参数列表:执行异常"
                param.hasExcept=True
                param.setRptString myResult
                param.setRptStatus 2
                myLog.WriteLog myResult&",用例函数列表编写错误"
                Exit Function
        End If
如果该函数有输出参数,则在恰当的位置增加,不区分输出参数名的大小写:param.PushArray "输出参数名", 输出参数值
如果函数中涉及到检查,则自行判断检查结果是否正确后,通过调用param.setRptStatus方法来输出,默认0表示成功(不改就是0);改为1表示失败;改为2表示程序出错
如果用例要新增一行测试的结果,则设置myResult的值,最后调用param.setRptString myResult
如果函数需要异常处理,则
        If err.number<>0 Then
                myResult="Do_函数名及参数列表::执行异常"
                param.hasExcept=True
                param.setRptStatus 2
                param.setRptString myResult
                myLog.WriteLog myResult&","&err.Description
                err.clear
        End If
3.在Flight.xlsx文件的函数页面中,在已有内容的下一行添加一行记录,添加方法参照B.Flight.xlsx编写要求中的6-9点
4.编写好后,调试过程中如果出现异常,需要先将内存中excel.exe进程杀掉,再运行前建议将之前不完整的测试报告文件删除,防止1分钟内2次生成的文件重名导致的再错误
5.本框架修改script.vbs文件中所有组件函数、Flight.xlsx中所有函数记录、用例记录,以及QTP脚本中所用flight.tsr扩展对象库文件后,可用于其他被测软件的自动化测试

819longjiayan 发表于 2015-1-30 15:51:24

赞个,分享了自己的成果,我写了部分,还没完成,也要向楼主学习,多分享;不过楼主你写的框架写得太不灵活了,脚本维护麻烦

819longjiayan 发表于 2015-1-30 15:51:33

赞个,分享了自己的成果,我写了部分,还没完成,也要向楼主学习,多分享;不过楼主你写的框架写得太不灵活了,脚本维护麻烦

非鱼1314 发表于 2015-2-5 09:27:58

正在学习框架,谢谢lz

oliver.tang 发表于 2015-2-9 20:07:29

路过,浏览:)

mixcool 发表于 2015-2-13 16:10:34

下载下来学习~谢楼主

zcxi007 发表于 2015-4-7 15:13:15

初学QTP,官网直接下载了UFT12.02的试用版

跟着Tutorial学

发现Flight GUI在Flight Details界面上,一旦点了order按钮就崩溃掉。。。

Flight service在后台运行着。。。

求大神指点。。

vbs小菜鸟 发表于 2015-4-10 15:26:35

819longjiayan 发表于 2015-1-30 15:51
赞个,分享了自己的成果,我写了部分,还没完成,也要向楼主学习,多分享;不过楼主你写的框架写得太不灵活 ...

刚开始研究框架,层主能说说楼楼的框架哪里写的不灵活吗?

cdq1010 发表于 2015-4-21 12:48:03

学习了

283976814 发表于 2015-5-20 09:36:56

:)good

lzq101848 发表于 2015-8-13 12:54:50

学习学习

shanfeng1419 发表于 2015-11-25 14:45:19

你好,看了你的框架,有个问题不明白,数据库是怎么动态加载上的?在代码里没看到,只在对象库管理里找到了加载的tsr。怎么操作具体?是手动把最后完整的对象库导出,在添加到association 里吗?还是写代码?

757563246 发表于 2015-11-29 22:14:32

下载参考下,谢谢分享了

gliter_love 发表于 2015-12-1 17:40:40

感谢楼主的分析:lol:handshake

757563246 发表于 2015-12-12 18:32:16

819longjiayan 发表于 2015-1-30 15:51
赞个,分享了自己的成果,我写了部分,还没完成,也要向楼主学习,多分享;不过楼主你写的框架写得太不灵活 ...

可以分享出来参考下不?

ccav_fuck 发表于 2016-1-7 16:25:22

以前只是对框架有没啥概念,现在开始学习自动化,才知道自动化框架 很重要~。学习下楼主写的

ccav_fuck 发表于 2016-1-7 16:25:51

以前只是对框架有没啥概念,现在开始学习自动化,才知道自动化框架 很重要~。学习下楼主写的

leozhu1992 发表于 2016-2-15 13:59:18

谢谢分享~~

mgc0530 发表于 2016-2-25 15:56:20

学习了

jiangyoujun 发表于 2016-3-20 11:47:17

谢谢分享,我正在学习框架,好头痛,希望对我有帮助:hug:
页: [1] 2
查看完整版本: 一个关于QTP自带Flight教学软件的自动化测试框架