Timeout 参数化检查点超时?

Timeout 参数化检查点超时?,timeout,automated-tests,qtp,checkpoint,Timeout,Automated Tests,Qtp,Checkpoint,在QTP中,检查点可用于定义预期状态,然后检查点检查该状态 这将在对象存储库(OR)中生成一个检查点条目,其中包含要检查/查询数据的测试对象的标识属性,以及:一个超时值 例如,位图检查点包含这样的超时值 如果将其设置为5(使用“位图检查点属性”对话框),QTP将尝试在5秒内等待实际图像与预期图像匹配 如果将其设置为0,则QTP根本不等待 这是所有记录在案的定义明确的行为。嗯 现在--如果我的应用程序变慢了,并且我所有的检查点超时都变得太低了,所以现在所有的检查点都失败了,那该怎么办 我必须手动增

在QTP中,检查点可用于定义预期状态,然后检查点检查该状态

这将在对象存储库(OR)中生成一个检查点条目,其中包含要检查/查询数据的测试对象的标识属性,以及:一个超时值

例如,位图检查点包含这样的超时值

如果将其设置为5(使用“位图检查点属性”对话框),QTP将尝试在5秒内等待实际图像与预期图像匹配

如果将其设置为0,则QTP根本不等待

这是所有记录在案的定义明确的行为。嗯

现在--如果我的应用程序变慢了,并且我所有的检查点超时都变得太低了,所以现在所有的检查点都失败了,那该怎么办

我必须手动增加所有检查点中的超时值。 或者,由于我是“聪明的”,我可以将对象存储库导出为XML,并使用一些聪明的工具在这些XML文件中执行智能大规模搜索和替换操作

如果是一次性操作,则这是正常的。但如果这种情况在一年左右的时间里发生不止一次呢?如果您不仅有一个中央或多个操作库,而且有很多操作库,该怎么办?光是出口就已经很乏味了

现在-这是导致这个问题的真实情况-要有一个统一的:)超时处理,我有一个常数定义为短时间间隔,一个常数定义为长时间间隔(以秒为单位)。如果需要等待、轮询状态或执行任何与超时相关的操作,我们所有测试的代码都会使用这两个常量中的一个。 我们甚至在QTP的web配置中以编程方式将默认对象识别延迟设置为library init的short interval常量值,以确保在播放过程中没有人使用不同的“标准”超时值。这确实有助于保持测试结果的可比性

通过这种方式,我可以在我的库代码中集中定义最大等待时间(两个都是,一个用于导航等快速操作,另一个用于长时间的“大”作业),只需编辑这两个常量的值。酷

除了检查站如何强制所有检查点使用短间隔常量的值?我不能。让我们考虑解决办法(某些人会称之为解决方案):

  • 第一个想法:参数化超时。请注意,QTP不支持这一点

  • 第二个想法:见上文——导出所有ORs,大规模搜索和替换,重新导入。请注意,以这种方式复制中心更改并不完全是中心配置。如果你有大量的每一个动作的ORs,它是非常容易出错的

  • 第三个想法:创建一个工具,使用QTPs对象模型(或自动化对象模型)API在测试运行时更新检查点值。嗯。额外代码。检查呼叫。嗯

  • 第四个想法:考虑到在检查点执行期间,从OR获取的每个checkpoint()引用都传递给特定测试对象的Check方法,可以创建一个全局函数,该函数接受检查点,修补其超时值,并使用修补的检查点调用原始的Check方法。然后,原始检查方法将使用它在检查点中找到的超时值。伟大的但是我必须在我使用的每个测试对象类中注册这个定制检查方法。或者,为了使其正确,即使在所有测试对象类中,QTP也知道。此外,在测试运行时访问/更新检查点的超时值似乎并不简单。但至少那些
    .Check.Checkpoint
    检查点调用可以保持原样。嗯,又来了

还有更好的主意吗?
是否有人尝试过这一点,或者找到了一个优雅的解决方案来参数化检查点中的超时值?

我可能会选择您的选项#3,创建一些代码,使用AOM从关联的对象存储库中获取检查点类型的所有对象。然后对每个这样的对象执行
设置属性(“step\u timeout”,yourValue)


另外,我通过右键单击脚本中的检查点对象并选择对象属性找到了名称步骤超时

我可能会选择您的选项#3,创建一些代码,使用AOM从相关对象存储库中获取所有类型为检查点的对象。然后对每个这样的对象执行
设置属性(“step\u timeout”,yourValue)


另外,我通过右键单击脚本中的检查点对象并选择对象属性找到了名称step_timeout

同时,我有一堆VBS脚本,它们迭代操作的脚本代码或条目,以更新/重置/修改某些设置,因此我不必手动复制这些更改,所以你的建议/支持最终就是我所做的。因此:接受。同时,我有一堆VBS脚本,它们迭代操作的脚本代码或条目,以更新/重置/修改某些设置,这样我就不必手动复制这些更改,所以您的建议/支持最终就是我所做的。因此:接受。