假设我使用 QTPs 恢复场景管理器将播放同步超时设置为 0。处理程序将返回“继续执行下一条语句”。
我这样做是为了确保任何以下播放语句都不会在失败之前浪费时间等待下一个不存在/不匹配的步骤:
我有很多 GUI 测试会卡住,因为假设如果缺少 10 个控件,它们的(连续)播放步骤会在失败之前产生 10 个超时等待。如果播放超时为 30 秒,我会失去 10x30 秒 = 5 分钟的执行时间,而一次等待 30 秒就足够了(因为应用程序不再更改——我们已经等待了一个完整的超时时间)。
现在,如果我有 100 个测试用例(=动作迭代),这可能会发生 100 次,浪费了 500 分钟的测试执行时间窗口。
这就是为什么我想出一个恢复场景函数的想法,在第一个失败的播放步骤之后/之后将超时设置为 0。这将加快速度,同时跳过正确失败的步骤,但不会影响识别下一个匹配的 GUI 上下文(创建通过步骤)的精度/可靠性。
然后当然在下一个通过的播放步骤中,我想恢复原始超时值。我怎么能那样做?这是我的问题。
无法定义为 PASSED 步骤调用的恢复方案函数。
我目前正在考虑为 Reporter.ReportEvent 设置一个方法函数,并在那里“嗅探” PASSED 日志条目。我会在将超时设置为 0 的场景恢复函数中安装该方法函数。然后,当“嗅探器”函数在以下播放步骤之一期间检测到具有 PASSED 状态的 ReportEvent 调用时,我将重置所有内容(即恢复原超时,并卸载方法功能)。(但是,我 99% 确定 .Click 和 .Set 方法不会调用 ReportEvent 来写入它们的结果状态……所以这个选项可能不起作用。)
更好的想法?这真的让我很烦。