《QuickTest Professional Tutorial》读书笔记(9)

来源:互联网 发布:人工智能 电影 豆瓣 编辑:程序博客网 时间:2024/05/01 21:37
QTP可以使用正则表达式让测试脚本更有弹性、更能适应应用程序的变化。
 

1.         简介

通过正则表达式, QuickTest 可以使用不同的值来标识对象和文本字符串。您可
以在以下操作中使用正则表达式:
在对话框或编程描述中定义对象的属性值
参数化步骤
使用不同的值来创建检查点
例如,如果要创建日期文本字符串的文本检查点,可以使用正则表达式,但显示
的日期随当前日期变化。如果将日期定义为正则表达式,则检查点检查捕获的文
本字符串是否与期望的日期格式匹配,而不是检查准确的日期值。
正则表达式是指定复杂搜索短语的字符串。通过使用特殊字符,例如句点 (.)、星
号 (*)、插字号 (^) 和方括号 ([ ]),您可以定义搜索条件。

2.         使用范围

使用属性值正则表达式

如果希望属性值在每个运行会话期间按某种可预测的方式变化,那么,在对话框(如“对象属性”或 “对象库”)或编程描述中定义或参数化属性值时,可以使用正则表达式。例如,您的站点可能会有一个表单,用户在其中输入数据,然后单击 “发送”按钮提交该表单。如果未能完整填写必需的字段,系统会重新显示该表单,以便让用户填写完整个表单。重新提交表单时,用户单击“重新发送”按钮。您可以将按钮 “名称”属性的值定义为正则表达式,以便在单击按钮时, QuickTest 忽略按钮名称的差异。

在检查点中使用正则表达式
创建标准的检查点来验证对象的属性值时,您可以将对象属性的期望值设置为正则表达式,以便可以验证具有不同值的对象。例如,假定您要检查应用程序的每个窗口和对话框是否在连字符 (-) 和描述性标题前面包含应用程序名称。您可以在测试中向每个对话框对象添加检查点,以便检查标题的第一部分是否在连字符前面包含应用程序的名称。创建文本检查点以检查网站或应用程序中是否显示了不同的文本字符串时,可以将该文本字符串定义为一个正则表达式。例如,在 Mercury Tours 示例网站预定机票时,计入信用卡号的总成本应该不低于 300 美元。您可以将该值定义为一个正则表达式,那么只要该值不低于 300 美元, QuickTest 则将忽略文本字符串中的差异。可以将同样的原理应用于以下任何检查点类型,其对话框中含有类似于“配置值”区域。例如,对于表检查点,您可以将单元值设置为正则表达式,而对于 XML 检查点,您可以将属性或元素值设置为正则表达式。

3.         正则表达式定义

可以在编程描述中定义常量值、数据表参数值、环境参数值或属性值的正则表达式。有关定义属性值的详细信息,请参阅第 238 页的“配置常量和参数值”。在“常量值选项”对话框或“参数选项”对话框的“值”框中输入字符串的正则表达式语法,可以定义正则表达式。选中“正则表达式”复选框,以指示 QuickTest 将该值作为正则表达式处理。所有编程描述属性值都均自动作为正则表达式处理。
默认情况下,除了句点 (.)、连字符 (-)、星号 (*)、插字号 (^)、方括号 ([ ])、圆括号 (())、货币符号 ($)、垂直线 (|)、加号 (+)、问号 (?) 和反斜杠 (/) 以外,QuickTest 将正则表达式中的所有字符作为文字处理。当一个特殊字符前面带有反斜杠 (/) 时, QuickTest 将其作为文字字符处理。
如果在“常量值选项”或“参数选项”对话框的 “值”框中输入一个特殊字符,QuickTest 会询问您是否要在每个特殊字符前面添加一个反斜杠 (/)。如果单击“是”,则相应的特殊字符前面就会加上一个反斜杠 (y),以指示 QuickTest 将该字符作为文字处理。如果单击“否”, QuickTest 将该特殊字符作为正则表达式字符处理。
以下列举某些更常用的选项,可用于创建正则表达式:
使用反斜杠字符 ( / )

匹配任意单个字符 ( . )

匹配列表中的任意单个字符 ( [xy] )

匹配不在列表中的任意单个字符 ( [^xy] )
匹配某个范围内的任意单个字符 ( [x-y] )

特定字符的零次或多次匹配 ( * )

特定字符的一次或多次匹配 ( + )

特定字符的零次或一次匹配 ( ? )

对正则表达式进行分组 ( ( ) )

匹配几个正则表达式中的一个表达式 ( | )

在一行的开始进行匹配 ( ^ )

在一行的结尾进行匹配 ( $ )

匹配包括下划线在内的任一字母数字字符 ( /w )

匹配任意非字母数字字符 ( /W )

组合正则表达式操作符

4.         实例

接下来我们建立一个实际使用正则表达式的例子:建立一个文字检查点来检查飞机出发日期,该日期能根据你选取的航班不同而改变。在此我们不是检查具体的日期,而是检查显示的日期范围是否合理。
操作步骤如下:
  1. 运行QTP打开Recording脚本并另存为RegExpression。
  2. 在Keyword View中展开Welcome:Mercury Tours->Select a Flight:Mercury,在Active Screen中以鼠标框住出发班机日期12/29/2008,再以鼠标右键点取并选取Insert Text Checkpoint,开启Text Checkpoint Properties对话框。
  3. 在弹出对话框中点击Constant Value Options按钮,编辑常量属性为[0-3][0-9]/[0-1]?[0-9]/200[0-9](注意这里用到了组合正则表达式),并确认选中Regular expression按钮,弹出的对话框中选择NO按钮,如果选中YES则会在每个特殊字符前加上反斜线(/),将这些特殊字符如([)、(-)、())当作一般字符而非特殊字符处理。关闭对话框。
  4. 保存脚本,运行,查看测试结果。
 
原创粉丝点击