检查点用于比较运行时的值和预先定义好的预期值。它可以在测试结果文件中设置成功/失败的状态。
检查点类型
QTP提供以下类型的检查点:
标准检查点:用于验证标准对象的属性集。标准检查点可以用于按钮(Buttons),图像(Images),单选按钮(Radio Buttons)等对象。
图像检查点:用于比较图像的各种属性值,如愿文件地址,宽,高等。
位图检查点:该检查点通过象素来比较屏幕上的位图和事先录制好的位图。
表格检查点:比较运行时屏幕上表格中的值和预定义的值。
文本检查点:检查一个字符串是否显示在应用程序中的预期位置。
文本域检查点:检查一个字符查是否出现在应用程序中的预期区域中。
访问性检查点:检查web应用程序不符合W3C可访问性标准的区域
网页检查点:检查网页上一些属性, 如链接数,网页加载时间等。
数据库检查点:检查在检查点中指定的数据库条目的内容是否正确。
XML检查点:检查XML文档或Web XML文档的内容。
注意:XML和数据库检查点可以在录制模式或设计模式中添加。其他检查点可以在录制模式或通过Active Screen Objects来添加。
关于插入检查点的步骤,请参考QTP户使用手册。
问题8-1:如何检查一个检查点是通过还是失败?
检查点执行后的结果存放在测试结果文件中。一个检查点语句看起来像如下:
a=Dialog("Login").WinEdit("Agent Name:").Check CheckPoint("Agent Name:")
在上述代码中,” Test Link”是检查点的名称,”Test”是检查点被执行的对象。我们可以通过计算checkpointcall的返回值查看检查点的状态。
a=Dialog("Login").WinEdit("Agent Name:").Check (CheckPoint("Agent Name:"))
If a Then
msgbox "通过"
else
msgbox "不通过 "
End If
如果不想把检查点的状态记录在测试结果文件中,可以使用Reporter对象的Filter属性:
‘使所有的事件导报告失效
reporter.Filter =rfdisableall
‘获取检查点的状态
a=Dialog("Login").WinEdit("Agent Name:").Check (CheckPoint("Agent Name:"))
‘使导报告生效
reporter.Filter =rfdisableall
Problems with QTP built-in checkpoint
有必要理解使用QTP检查点时会遇到的一些问题:
l 检查点不是很灵活。例如,QTP不允许通过代码来改变检查点的预期结果-但是我们可以通过使用数据表变量或环境变量来具体定义检查点的预期结果。
l 检查点不能在运行时创建。
l 检查点在QTP8.x中不能重命名
l 检查点在QTP8.x中不能删除
l 检查点以私有的二进制形式(proprietary binary format)存储在对象库里-是不能见的
l 已存在检查点不能从一个action复制到另一个action。
QTP检查点最适合应用在静态应用程序中,比如信息型网站,包含很少变化的静态内容。
Alternatives to QTP checkpoints
一般情况证明,使用内联VBScript 语句来比较运行时的值和预期结果比使用QTP检查点更有效,更灵活。在该部分,我们将前面的检查点转化成使用内联代码验证。
‘获取一个我们需要验证的对象引用
Set UserNameObj=Dialog("Login").WinEdit("Agent Name:")
‘从对象中获取我们需要验证的实际属性
ActualNativeclass=Dialog("Login").WinEdit("Agent Name:").GetROProperty("nativeclass")
ActualAttachedText=Dialog("Login").WinEdit("Agent Name:").GetROProperty("attached text")
‘定义我们希望那些属性包含的值
ExceptNativeclass="Edit"
ExceptAttachedText="Agent Name:"
‘验证运行时的值匹配预期值
If ActualNativeclass=ExceptNativeclass AND ActualAttachedText=ExceptAttachedText Then
reporter.ReportEvent micPass,"输入用户名","nativeclass预期值是"&ExceptNativeclass&"nativeclass实际值是"&ActualNativeclass
else
reporter.ReportEvent micFail ,"输入用户名","nativeclass预期值是"&ExceptNativeclass&"nativeclass实际值是"&ActualNativeclass
End If
除了位图检查点,我们可以使用该技术来模拟任何QTP检查点。
NOTE: 等效的数据库检查点可以使用ADODB来模拟。在“Working with Database”这章中,我们可以找到更多关于ADODB的知识。XML检查点可以用XMLUtil对象来模拟。在“Working with XMLs”这章中,我们可以找到更多关于使用XMLUtil对象的知识。
Updating Checkpoints at run-time
QTP不允许在运行时修改检查点的属性,但是可以使用数据表或环境变量来设置检查点。有些属性也可以使用代码来修改。通常,一个检查点的语句如下:
Dialog("Login").WinEdit("Agent Name:").Check CheckPoint("Agent Name:")
CheckPoint(“the web”)是一个包含了关于这个检查点的所有信息的对象。CheckPoint对象支持2个隐藏的函数,SetProperty和GetProperty。
表8-1 检查点属性描述
|
检查点 |
属性 |
描述 |
|
标准检查点 |
micclass |
Mercury为检查点提供的内部类。有一个值“VerifyObj”。 |
|
Step_type |
检查点的类型。会有一个值“Checkpoint“。 | |
|
Step_timeout |
当检查点失败时的超时设置。 | |
|
文本检查点 |
Micclass |
Mercury为检查点提供的内部类。有一个值“TextVerObj”。 |
|
Step_type |
检查点的类型。会有一个值“Text Checkpoint“。 | |
|
Step_timeout |
当检查点失败时的超时设置。 | |
|
Text | ||
|
Text Before | ||
|
Text Before | ||
|
Indexoftextbefore | ||
|
Text After | ||
|
Newindexoftexafter | ||
|
Text not found |
NOTE: Micclass,Step_type,Step_timeout是3个通用的属性,可以为所有检查点获取这3个 值。除了上面的2个检查点外,其他 检查点是复杂的,在运行时不能修改的。
下面举例说明如何使用这些检查点属性:
<代码部分暂略>
WARNING: 不推荐使用上面的方法来改变检查点的属性,因为这些方法没有在文档中记载,在QTP以后的版本中可能不支持。

1866

被折叠的 条评论
为什么被折叠?



