51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4915|回复: 10
打印 上一主题 下一主题

[原创] 求教QTP中参数化数据库检查点的方法【已解决】

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-7-14 02:19:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在脚本中有一变量:
Dim Uid(其值是动态变动的,由外部txt文件获得)
通过insert---checkpoint---database checkpoint的方式,添加一手工的Specify SQL statement manually,
想以Uid作为条件对记录的其他字段做检查,即:select * from tablename where UserId = Uid,
但此Uid为一可变值,不能对其赋具体值将sql语句写死,请教下各位大大,若想用checkpoint的方式(暂不讨论可在脚本中写代码连库查询的方式代替),如何来写这段SQL语句才能将变量Uid的值传到Checkpoint中去?
了解这方面东东的给个稍微具体的例子吧,谢谢先了

PS:QTP能否实现这样的参数化?

[ 本帖最后由 早晨很舒服 于 2008-7-15 01:56 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2008-7-14 12:14:48 | 只看该作者
自己顶一下,
这样子参数化是真的行不通吗?哪位大哥给些建议啊!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2008-7-14 12:46:58 | 只看该作者
你在keyword view 中,右键选择检查点,在菜单当中,选择object properties,在里面当中,可以将source参数化,也许可以解决你的问题
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2008-7-14 13:56:50 | 只看该作者
楼上的可行,但不一定能解决你的问题,试试吧
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2008-7-14 14:23:26 | 只看该作者

谢谢楼上几位先,但我新手,不太能看懂source的参数化,我对它肤浅的理解成是对数据来源部分的参数化(以sql的查询结果为来源|以datatable的数据为来源|以环境变量为来源),不知正确否?大大们可否详细给俺说说
我想解决的问题掰开是这样的:
在*.txt中有UserId的数据(一行一个),我用循环的方式去读取每行数据,在单次循环中将其数据赋给变量Uid,同样在此循环中以Uid作为条件查询,对数据库记录进行检查,即添加了数据库检查点,其中语句大致为:
select * from tablename where UserId = Uid,
跳入下一次循环后,uid被赋上了第二行值,检查点也随同更新。。。所以在此需要对检查点的SQL语句中的Uid参数化,如果直接在脚本中写查询代码可以很容易实现,但我想试试封装好的checkpoint能否也能实现如此功能。
各位老大,帮我分析分析嘛
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2008-7-14 16:42:56 | 只看该作者
这个完全可以做到啊,你把uid读取出来之后,在checkpoint之前,改变你参数化的查询条件,
首先在,在datatable中,把查询条件的那一列的值统一设置为"select * from tablename where UserId =",然后在脚本当中,把uid加到这个值的后面上去就可以了(注意在checkpoint之前重新设置值).
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2008-7-15 01:51:49 | 只看该作者
谢谢zhou840401,按照你说的方式已成功:
简略步骤如下:
1.在datatable中修改一列名为sqlstr   
2.取到uid值
3.datatable.value("sqlstr")="select * from tablename where UserId ="&uid
4.插入一数据库检查点。
5.在keyword view 中检查点的source参数化:选择datatable的sqlstr项即可。
再次感谢

[ 本帖最后由 早晨很舒服 于 2008-7-15 16:55 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2008-10-31 15:53:31 | 只看该作者
谢谢zhou840401,按照你说的方式已成功:
简略步骤如下:
1.在datatable中修改一列名为sqlstr   
2.取到uid值
3.datatable.value("sqlstr")="select * from tablename where UserId ="&uid
4.插入一数据库检查点。
5.在keyword view 中检查点的source参数化:选择datatable的sqlstr项即可。
再次感谢

继续求助!
我现在也在操作同样问题,可照如上步骤操作后,运行结果总是提示“The specified query could not be executed."
好像是参数化的sql语句没执行,可就是找不到原因,还请各位及时指导!!非常感谢!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-3-9 15:36:23 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2010-3-30 17:27:43 | 只看该作者
按步骤做了,不行的?
qtp还是按照设定检查点时的SQL执行。
比如,设定检查点时,录入的sql是 select * from table where id='a'
datatable里设置一列,sql为 select * from table where id='b'
然后参数化source
回放时,仍然按id='a'来检查的,不知道为什么
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2010-9-1 15:23:38 | 只看该作者
学习啦
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-10-5 15:34 , Processed in 0.093261 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表