QTP是quicktest Professional的简称,是一种自动测试工具。
QTP自带教程中有关于日期的正则表达式的例子,即对时间:月/日/年采用正则表达式方法进行检查,但经常是测试失败。例子中提供的表达式为:[0-1][0-9]/[0-3][0-9]/200[0-9]。 当时间的月份和日期选择的是个位数时,订票页面中的日期前面并不会显示出0,使得测试失败。
问题分析:
检查点设置后认为格式应该是06/03/2007的,而实际捕获到的是6/3/2007。检查后发现,如果时间的月份和日期非个位数时,例如选择的时间是10/10/2007,则测试是可以通过的。
说明给出的例子的检查点设置是有问题的,需要对该表达式进行修改。
有以下几种正则表达式的修改方法:
1、[0-1]{0,}[0-9]/[0-3]{0,}[0-9]/200[0-9]
2、[0-1]{0,1}[0-9]/[0-3]{0,1}[0-9]/200[0-9]
3、[1]{0,}[0-9]/[1-3]{0,}[0-9]/200[0-9]
4、[1]{0,1}[0-9]/[1-3]{0,1}[0-9]/200[0-9]
解释:
[0-1]{0,}表示括号中的数,即在0到1范围内的数,允许出现0到任意次。不过这种表示不是很合适,如果月份和日期显示成了三位数或以上,也是检查不出错误的。
[0-1]{0,1} 就表示允许出现0个或一个数。这种表示严格规定了范围及显示个数,不出现时就表示这个月份是个位数,没有十位数。这种对于不确定程序有没有省略掉前面的0可以用此方法表示
[1]{0,1}则表示可以不出现1,也可以出现1。这种也是可以的,如果出现了1,当然就表示该月份是十位数了。
修改后保存,重新运行,测试通过。
不过值得注意的是在QTP里,对时间采用正则表达式检查的话,只能是对其格式进行检查,选择的日期与显示的是否一致这是检查不出来的。