第二十八章 QTP高级应用
在本章我们将会讨论QTP中各种相对高级的常见问题及解决方案,这里故意把本章留在最后,主要的原因是本章的各种概念在之前的很多章节中已经提到过,我们还会介绍Settings对象在运行时遍历所有的子项,此技术可以用于研究发现QTP的一些文档未公开的隐藏特性。
不同机器的测试脚本同步执行
在一些复杂的测试系统场景下会需要QTP去通过脚本去触发另一个脚本以及需要执行的被测应用,在这类情况下,我们需要通过同步通知方式来使不同种类的应用进行协同工作。
为了解决此类问题,我们需要从QTP脚本运行中获取到过程信息,主要是通过QTP的自动化模型AOM下的Environment对象接口来实现所需要的同步进行协作和控制的脚本执行。以下脚本展示了怎样通过自动化模型AOM获取到本地机和远程机上的环境变量Environment对象:
'获取正在运行QTP的对象引用 Set qtpLocalPC = CreateObject("QuickTest.Application") sRemoteIP = "10.1.1.1" Set qtpRemotePC = CreateObject("QuickTest.Application", sRemoteIP) '获取到环境变量 Set qtpLocalEnv = qtpLocalPC.Test.Environment Set qtpRemoteEnv = qtpRemotePC.Test.Environment '最终可以访问到环境变量 MsgBox qtpLocalEnv("TestDir") MsgBox qtpRemoteEnv("TestDir") |
那么现在就需要等待QTP运行合适的位置时对指定环境变量进行更新,看一下如下QTP脚本:
QTP脚本1
'脚本1Script 1 '创建同步点环境变量 Environment.Value("SyncPoint1") = False Msgbox "Job 1 Completed" '实现任意操作 '<-- 另一个脚本会等待此同步点为True Environment.Value("SyncPoint1") = True Msgbox "Starting Job 2" |
VBScript脚本2
此Vbscript脚本会等待QTP脚本1更新SyncPoint1的状态后才开始执行:
'本地机器IP strCompIP = "127.0.0.1" Set qtpApp = CreateObject("QuickTest.Application", strCompIP) '等待脚本停止 While Not qtpApp.Test.IsRunning Wend '等待同步点SyncPoint环境变量更新为True While qtpApp.Test.Environment("SyncPoint1") <> True Wend MsgBox "Script 1 has passed the sync point." |
在QTP中运行脚本1以及脚本2,脚本2将会等待Job 1 Competed消息后弹出Script1 has passed the sync point消息框。