51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1782|回复: 1
打印 上一主题 下一主题

UFT开发实例:一个完整的测试框架源码

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-8 15:12:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、已实现的功能列表

框架已经实现的功能如下:

1、脚本数据分离

2、异常截图并关联截图

3、无界面启动UFT

4、定时启动UFT

5、步骤日志跟踪

6、数据库检查点验证

7、测试结果发送

8、测试报告生成

9、场景恢复

10、脚本执行速度控制

11、系统资源监控,如Cpu峰值监控(基于UFT)

12、执行过程录制回放(基于UFT)


二、框架部分关键代码

1、必须导入的驱动脚本,用户全局环境控制

  1. Call driver()

  2. Function driver()
  3.         '初始化环境,包括获得project所在的本地目录。
  4.         projectPath = getProjectPath()
  5.         sourceDataFile = projectPath&"\TEST.xls"
  6.         sourceDataSheet = "Sheet1"
  7.        
  8.         Dim qtApp 'As QuickTest.Application ' Declare the Application object variable
  9.         Dim qtTest 'As QuickTest.Test ' Declare a Test object variable
  10.         Dim qtResultsOpt 'As QuickTest.RunResultsOptions ' Declare a Run Results Options object variable
  11.        
  12.         Set qtApp = CreateObject("QuickTest.Application") ' Create the Application object
  13.         qtApp.Launch ' Start QuickTest
  14.         qtApp.Visible = True ' Make the QuickTest application visible
  15.         ' Set QuickTest run options
  16.         qtApp.Options.Run.CaptureForTestResults = "OnError"
  17.         'qtApp.Options.Run.RunMode = "Fast"
  18.         qtApp.Options.Run.ViewResults = False
  19.        
  20.         ' 打开入口的测试脚本,并且加载testCase的脚本
  21.         qtApp.Open projectPath&"\理赔系统流程", False, False  ' 打开入口的测试脚本,可写,不保存
  22.         Set qtTest = qtApp.Test
  23.        
  24.                 ' set run settings for the test
  25.                 Set qtResultsOpt = CreateObject("QuickTest.RunResultsOptions")
  26.                 qtResultsOpt.ResultsLocation = projectPath&"\result" '运行结果保存到临时文件夹中
  27.                 qtTest.Run qtResultsOpt, True
复制代码

3、脚本代码片段,完整代码请见工程源码

  1. option explicit  '规范声明

  2. '定义变量
  3. Dim ProjectDir '根目录
  4. Dim TestSetExcelFile '测试用例Excel路径
  5. Dim vbprpDuserUserCode1'定义用户名
  6. Dim vbprpDuserUserCode2'定义用户名
  7. Dim vbprpDuserPassword'定义密码
  8. Dim row_count ' Global中用例行数
  9. Dim rownum ' 当前运行的行
  10. Dim sqlstrm 'sql查询变量
  11. Dim keyname '数据库字段
  12. Dim TestCasesFile
  13. Dim SheetNameExcel
  14. Dim isRun
  15. Dim StartTime
  16. Dim EndTime
  17. Dim inRespTime
  18. Dim n '定义循环变量
  19. Dim vbprpNRegistReportorName1'定义客户名
  20. Dim vbprpNRegistReportorName'定义客户姓名
  21. Dim vbprpNRegistDamageAddress'定义出险地点
  22. Dim vbprpNRegistDamageCourse'定义出险过程
  23. Dim vbprpNRegistCarDriverPhoneNumber'定义客户联系方式
  24. Dim vbprpNRegistCarDrivingLicenseNo'客户证件号
  25. Dim vbprpNRegistCarDrivingLicenseNo2'三者证件号
  26. Dim vbprpNRegistCarDriverPhoneNumber2'三者联系方式
  27. Dim vbprpNRegistCarReportLoss'定义报损金额
  28. Dim vbBAOANNum1'定义商业险报案号
  29. Dim vbBAOANNum2'定义交强险报案号
  30. Dim vbJIEANNum
  31. Dim vbJIEANNum1
  32. Dim vbBAODANNum1'定义保单号
  33. Dim vbBAODANNum2
  34. Dim vbOutHospDate
  35. Dim vbAccountCode
  36. Dim accountcode
  37. Dim vbSHUNum'计算书号
  38. Dim vbPEIANNum'赔案号
  39. Dim vbSHUNum1
  40. Dim vbPEIANNum1
  41. Dim vbSHIGUNum'定义事故号
  42. Dim vbscheduleDeptCode'定义客户二账户名
  43. Dim vbLicenseNo'定义车牌号
  44. Dim JBYXSJ'定义日期

  45. '参数赋值


  46. '定义项目所在的根目录
  47. ProjectDir = getParentFolderPath(Environment.Value("TestDir")) '项目所在的根目录,
  48. 'msgbox ProjectDir
  49. Extern.Declare micVoid,"capture",ProjectDir&"CreateBitmap.dll","",micString
  50. '将用例转化为中间表
  51. TestCasesFile = ProjectDir&"TEST.xls"   '管理所有测试用例的Excel文件的路径
  52. 'msgbox TestCasesFile
  53. SheetNameExcel = "Sheet1"

  54. Call carinsured()

  55. Function carinsured()

  56. JBYXSJ = FormateDateTime(date(),"3")
  57. vbOutHospDate = date+3
  58. Call DataTable.ImportSheet(TestCasesFile,"Sheet1","Global")
  59. row_count = DataTable.GetSheet("Global").GetRowCount'得到用例中总行数
  60. 'msgbox row_count
  61. '此处添加循环
  62. For  n = 1 to row_count

  63. DataTable.GetSheet("Global").SetCurrentRow(n)

  64. datatable.Export  ProjectDir&JBYXSJ&"流程验证结果.xls"  '导出运行结果,生成result.xls文件

  65. '导入中间表
  66. TestSetExcelFile = ProjectDir&JBYXSJ&"流程验证结果.xls"   '管理所有测试用例的Excel文件的路径
  67. Call DataTable.ImportSheet(TestSetExcelFile,"Global","Global")
  68. 'row_count = DataTable.GetSheet("Global").GetRowCount'得到用例中总行数
  69. isRun=DataTable.Value("RUN", "Global")
  70. If isRun = "Y"  Then

  71.     rowNum = datatable.GetSheet("Global").GetCurrentRow
  72. ' msgbox rowNum

  73. vbprpDuserUserCode1 = DataTable("帐号一","Global")
  74. vbprpDuserUserCode2 = DataTable("帐号二","Global")
  75. vbprpDuserPassword = DataTable("用户密码","Global")
  76. vbprpNRegistReportorName = DataTable("客户姓名","Global")
  77. vbprpNRegistDamageAddress = DataTable("出险地点","Global")
  78. vbprpNRegistDamageCourse = DataTable("出险经过","Global")
  79. vbprpNRegistCarDriverPhoneNumber = DataTable("客户联系电话","Global")
  80. vbprpNRegistCarDrivingLicenseNo = DataTable("客户证件号码","Global")
  81. vbLicenseNo = DataTable("客户车牌号","Global")
  82. vbprpNRegistCarReportLoss = DataTable("报损金额","Global")

  83. ......    '调用用户自定义的逻辑代码

  84. DataTable("流程是否通过") = "是"
  85. DataTable("备注") = "流程全部通过"
  86. datatable.ExportSheet  ProjectDir&JBYXSJ&"流程验证结果.xls","Global"  '导出运行结果,生成result.xls文件

  87. closeie()
  88. End If

  89. Next

  90. End FUNCTION
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-23 08:23 , Processed in 0.065059 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表