你笑的时候全世界陪你一起笑,你哭的时候只有你一个人哭

WR的参数化数据库检查点

上一篇 / 下一篇  2007-04-27 23:16:22 / 个人分类:Winrunner 技术

查看( 3852 ) / 评论( 17 )

在Winrunner的三大检查点中有一个数据库检查点,可以很方便的检查、对比回放过程中被测软件对数据库的记录操作,同时它也提供一个参数化的功能,允许用户根据需求替换你要查询的条件。这里我来简单介绍一下如何设置参数化的数据库检查点

仍然是以WR自带的Flight为例,打开软件录制一个order的插入过程,脚本如下:

# Flight Reservation
 set_window ("Flight Reservation", 15);
 obj_type ("MSMaskWndClass","111111");
 list_select_item ("Fly From:", "London");  # Item Number 2;
 list_select_item ("Fly To:", "Paris");  # Item Number 3;
 obj_mouse_click ("FLIGHT", 26, 57, LEFT);

# Flights Table
 set_window ("Flights Table", 1);
 button_press ("OK");

# Flight Reservation
 set_window ("Flight Reservation", 6);
 edit_set ("Name:","yangmh" );
 button_press ("Insert Order");

list_check_info("Fly From:","value","London");
wait(10);

在脚本最后插入custom的数据库检查点,WR->Insert->Database Checkpoint->Custom Check 选择Specify SQL statement(这里已ODBC为例) 

next,在选择连接中点击Create,选择系统自带的Flight32(这是安装WR时自动注册上去的)

在下面的SQL语句中写入你要参数化的语句,注意,把你想要参数化的地方用问号“?”代替,并用括号括起来:

SELECT Flights.Day_Of_Week
FROM Flights, Orders 
WHERE (Orders.Customer_Name=?) AND (Flights.Departure=?) AND (Flights.Flight_Number=Orders.Flight_Number)

这里我把订票人和起飞地点参数化了,从Flight和Orders两个表中取数据并关联,最后查询符合记录中Flights.Day_Of_Week的值

如果你不确定语句是否正确,可以打开Microsoft Query 记载你的数据库并执行一下,如果正确的话它会提示你输入查询参数值并最后给出查询结果。

点击finish后WR会提示你这是一个参数化的数据库检查点,它的预期结果WR没有得到,你必须提前使用Update模式运行一下。之后可以看到数据库检查点的窗体弹出,点击ok后会提示你是否要更改选择,这里点击no

之后参数化的检查点语句会自动出现在脚本最后,但我们还需要给参数赋值,赋值语句是一个数组,你有多少个参数就写多少数组元素,且必须写在检查点语句之前:

dbvf2_params[1]="yangmh";
dbvf2_params[2]="London";
db_check("list2.cdl", "dbvf2", NO_LIMIT, dbvf2_params);

这里我想查询Customer_Name=yangmh,Departure=London的记录。

把WR调为Update模式运行一下,使WR得到Expect Result,之后再使用Verify模式运行,查检Test Result

WR已经成功取得预期结果并与verify模式下的实际结果进行对比。

同样我们可以把参数数组dbvf2_params[]放到脚本的前面,将操作中的部分函数用这个数组代替,如在Flight中输入订票人的时候可以这样写:

# Flight Reservation
 set_window ("Flight Reservation", 6);
 edit_set ("Name:",dbvf2_params[1]);
 button_press ("Insert Order");

这样当我们想要查询其他订票人和其他起飞地点的时候只需在脚本前更改一下赋值并Update一下即可。

ps:在插入数据库检查点的语句前最好能等待一段时间,或者插入一个gui检查点,让操作完全记录到数据库中,这样Update时才能得到正确的预期结果


TAG:

gp_jl的个人空间 gp_jl 发布于2007-04-28 13:30:53
好文!sdlkfj3 是否可以考虑在以下部分使用数据驱动:dbvf2_params[1]="yangmh";
dbvf2_params[2]="London";
dionysus的个人空间 dionysus 发布于2007-04-28 15:05:17
考虑过这样做,但是数据库检查点一次只能保存一个预期结果,所以循环验证的时候只能有一个结果是匹配的,所以在更改赋值后必须Update一下
huco7发布于2007-05-25 10:01:00
谢谢楼主的共享!!
holee的个人空间 holee 发布于2007-07-03 16:56:17
学习以下
helius的个人空间 helius 发布于2007-07-09 10:52:32
好文 以后备用学习
welkatrina发布于2007-07-09 22:29:05
sdlkfj3 大家都是高手啊...................
lok_198461发布于2007-07-20 09:05:47
好东西,谢谢版主分享。
蓝天城 蓝天伟 发布于2007-07-20 09:17:46
好东西,顶一下!
pangge369发布于2007-07-23 17:42:03
好东西呀!
wuyuanzhe发布于2007-07-30 18:03:16
好东西啊,学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~```
lok_198461发布于2007-07-31 08:37:02
不错的帖子,值得学习。
双面人的个人空间 双面人 发布于2007-11-13 15:40:52
好帖,被我发现了!
shuishixingyu的个人空间 shuishixingyu 发布于2008-04-08 16:36:59
不错的贴
tcjlml发布于2008-04-17 17:24:59
我照LZ的步骤全做了一遍
但是老是在update的时候出问题 说是GUI Capture Failure
是不是数据库出问题了呢
积累 superliuli1 发布于2008-06-17 16:14:05
学习了  
lovetest发布于2008-12-15 10:58:21
我也跟tcjlml遇到的问题一样。update模式执行的时候提示GUI Capture Failure,看不到预期结果。
dionysus的个人空间 dionysus 发布于2008-12-15 13:43:12
能否有更详细的信息?
我来说两句

(可选)

Open Toolbar