51Testing软件测试论坛

标题: 在qtp中建立带参数的数据库检测点如何设置 [打印本页]

作者: 飘雪    时间: 2005-4-25 13:58
标题: 在qtp中建立带参数的数据库检测点如何设置
谁知道在qtp中如何建立带参数的数据库检测点?
作者: lovetest6    时间: 2005-4-26 08:57
没明白什么意思啊??
你是说sql的参数么?还是什么东东?
作者: QA_BAY    时间: 2005-4-27 09:36
你想说QTP怎样建立数据库检查点是吗?
作者: 飘雪    时间: 2005-4-28 17:24
建立数据库检测点可以通过INSERT/CHECKPOINT/DATABASE CHECKPOINT进行设置,我想向WR那样,进行数据库检测点设置时,可以动态的传参数进去。WR在进行数据库检测点设置时可以使用通配符“?”,进行参数的传递,QTP怎么写呢?
不知道我的意思我表达清楚没有?
作者: 飘雪    时间: 2005-4-28 17:25
建立数据库检测点可以通过INSERT/CHECKPOINT/DATABASE CHECKPOINT进行设置,我想向WR那样,进行数据库检测点设置时,可以动态的传参数进去。WR在进行数据库检测点设置时可以使用通配符“?”,进行参数的传递,QTP怎么写呢?
不知道我的意思我表达清楚没有?
作者: QA_BAY    时间: 2005-4-29 08:56
你可以把WR怎么传递数据的方法写上来,让大家试着帮你转一下!
这样不是更清楚吗?
作者: 飘雪    时间: 2005-4-29 13:10
好呀,谢谢!
作者: 飘雪    时间: 2005-4-29 13:25
在wr中带参数的数据库检测点是这样写的,其中在进行数据源的设置时,采用的sql语句为:select sparepart_no,sparepart_name,flag_sn,flag_enabled from dim_sparepart  where sparepart_no=?
在脚本录制时采用:
dbvf1_params[1] = ddt_val(table,"SPNO");
db_check("list6.cdl", "dbvf1", NO_LIMIT, dbvf1_params);
现在就麻烦大家帮我想一想怎么进行转换吧。谢谢!
作者: lovetest6    时间: 2005-5-3 10:54
飘雪,在QTP中用脚本直接写是不是就可以了呢?呵呵,就象asp呵呵,
vbscript嘛
这样看QTP确实比WR好很多。呵呵。

[ Last edited by lovetest6 on 2005-5-3 at 10:59 ]
作者: dnapoweron    时间: 2005-5-5 10:33
我也想知道怎么办
作者: lovetest6    时间: 2005-5-6 15:06
楼上的,
不是说了嘛,直接写脚本就行了啊,
又没说一定要用QTP的脚本写。还有VBScript可以用嘛。

conn.execute
rs.open 啥的
都可以啊,感觉比WR里面的方便啊。

[ Last edited by lovetest6 on 2005-5-6 at 15:07 ]
作者: 飘雪    时间: 2005-5-8 17:06
Originally posted by lovetest6 at 2005-5-3 10:54 AM:
飘雪,在QTP中用脚本直接写是不是就可以了呢?呵呵,就象asp呵呵,
vbscript嘛
这样看QTP确实比WR好很多。呵呵。

[ Last edited by lovetest6 on 2005-5-3 at 10:59 ]


你好!针对我所说的功能用vbscript在qtp中实现呀,能否写出来,供我们参考一下呀,谢谢!
作者: QA_BAY    时间: 2005-5-8 17:23
查看了QTP的数据库连接,切实与WR不相同!
再说,对你在WR的那种方法我没有看明白.
可能我理解有问题,可以说清楚点吗?
作者: 飘雪    时间: 2005-5-9 09:45
想对数据库中的某一条记录进行检测,如果不通过参数,而是直接增加数据库检测点的话,他就把数据的所有记录全部查询出来,如果数据特别多,不好锁定一条记录,所以可以通过参数,直接锁定要查的那条记录,例如,要在表dim_sparepart  中查找sparepart_no为1的记录,其中在进行数据源的设置时,采用的sql语句为:select sparepart_no,sparepart_name,flag_sn,flag_enabled from dim_sparepart  where sparepart_no=?
在脚本录制时对参数付值:dbvf1_params[1] =1;
然后加入数据库检测点:
db_check("list6.cdl", "dbvf1", NO_LIMIT, dbvf1_params);
此时就可以查询出sparepart_no=1的记录了。不知道我的意思表达清楚没?
作者: QA_BAY    时间: 2005-5-9 12:57
Originally posted by 飘雪 at 2005-5-9 09:45 AM:
想对数据库中的某一条记录进行检测,如果不通过参数,而是直接增加数据库检测点的话,他就把数据的所有记录全部查询出来,如果数据特别多,不好锁定一条记录,所以可以通过参数,直接锁定要查的那条记录,例如, ...

不会阿,你可以对一条记录进行检测,QTP比WR弹性多了,也可以写SQL语句;
1.先选择一个字段,然后QTP导出所有的数据,这时,你可以选择想检查的数据.也可以只查一条.
2.你也可以写SQL语句
作者: 飘雪    时间: 2005-5-9 13:07
Originally posted by QA_BAY at 2005-5-9 12:57 PM:

不会阿,你可以对一条记录进行检测,QTP比WR弹性多了,也可以写SQL语句;
1.先选择一个字段,然后QTP导出所有的数据,这时,你可以选择想检查的数据.也可以只查一条.
2.你也可以写SQL语句


针对我上面的例子,你看怎么实现,可以写一下代码吗?我现在没有思路。
作者: QA_BAY    时间: 2005-5-9 14:28
QTP不像WR那样
它比WR方便多了。
你连好数据库之后直接导进数据不行吗?然后可以选择你想检查的数据!就这样阿,
你想写SQL语句也可以!
作者: 飘雪    时间: 2005-5-9 16:17
TO QA_BAY:
我明白你的意思了,可是,我想知道QTP对数据库检测时,可以使用参数吗?
作者: 飘雪    时间: 2005-5-9 16:44
我想表达的意思是:
比如说我想测试一个用户的增加功能是否正确,增加用户user和密码pwd,保存后。想通过数据库检查点监测库中是否存在这条用户。由于脚本需要不断的复用,因此我将用户和密码的值都参数化为parauser & parapwd, 那么我的数据库检查点的sql也必须参数化,不能写成固定的sql,否则预期的值和真正的值便不相匹配,但是在数据库检查点的SQL query中无法将sql参数化,而只能写成诸如 select * from dim_user where userid='1' 这样固定的数据,如果这样写,expected data肯定是和真正的值不相匹配的,请问如果将这个sql匹配,使得expected data根据动态的sql动态生成了
作者: lovetest6    时间: 2005-5-10 10:10
建一个dsn指向你的数据库或者你能知道connection string也可以
然后写vbscript代码(我觉得说ASP更好,呵呵)

  1. 代码:
  2. --------------------------------------------------------------------------------

  3. Set Conn = CreateObject("ADODB.Connection")
  4. Set Rs = CreateObject("ADODB.Recordset")
  5. Conn.Open "写上你的dsn连接到数据库,或者写连接字符串"
  6. 循环开始for,while什么都行,条件要写好
  7. username="<datatable.SetNextRow>" <----这里要用取datatable中的数据。
  8. Rs.Open "select * from dim_user where username=" & username",Conn
  9. 循环结束
  10. --------------------------------------------------------------------------------
复制代码


判断Rs.Fields("username")是否存在就可以了,当然了,其实判断rs是否为空就可以了。太详细的代码我也要查手册和以前写的例子了。有问题我再给你查。


另外,我想问一下,如果自己写的程序里面有结果需要记录,是不是应该把结果记录到output value中去啊?对output value不大理解,各位见笑啊。
总不能让我再自己写脚本生成一个文本文件吧?呵呵。


[ Last edited by lovetest6 on 2005-5-10 at 10:51 ]
作者: QA_BAY    时间: 2005-5-10 12:17
你可以把结果记录发到RESULT REPORT中,
就是运行完就显示在结果那里!是不是这种呢?
作者: lovetest6    时间: 2005-5-10 12:48
QA_BAY:
对对对啊,就是这种啊,应该怎么写啊?知道么??
作者: QA_BAY    时间: 2005-5-10 13:09
跟WR的tl_step差不多
就是
if    value = 0    then
    Reporter.ReportEvent 2, "密码输入框", "密码输入存在,通过测试."
  Else
    Reporter.ReportEvent 2, "密码输入框", "密码输入入框不存在,没有通过测试."
end if

注意以上所写的符号,还有数字

状态有四种:
0 or micPass: Causes the status of this step to be passed and sends the specified message to the report.
1 or micFail: Causes the status of this step to be failed and sends the specified message to the report. When this step runs, the test or component fails.
2 or micDone: Sends a message to the report without affecting the pass/fail status of the test or component.
3 or micWarning: Sends a warning message to the report, but does not cause the test or component to stop running, and does not affect the pass/fail status of the test or component.
作者: lovetest6    时间: 2005-5-10 13:46
不赖不赖!
  1. Reporter.ReportEvent 1, "密码输入框", "未显示,失败."
  2. Reporter.ReportEvent 2, "密码输入框", "显示正常,通过."
  3. Reporter.ReportEvent 3, "密码输入框", "位置不对,警告."
  4. Reporter.ReportEvent 4, "密码输入框", "最大输入长度5个汉字,信息."
复制代码

[ Last edited by lovetest6 on 2005-5-10 at 14:12 ]
作者: QA_BAY    时间: 2005-5-10 17:27
以后有什么问题多多交流吧!
:d:d:d:d:d:d:d:d
作者: 飘雪    时间: 2005-5-11 14:44
多谢!按着你们说的问题解决了。
作者: lovetest6    时间: 2005-5-11 16:26
QA_BOY,
pass的怎么没有绿色的对勾啊?
也不进入report中的统计,
你看看我上面贴的图。
作者: QA_BAY    时间: 2005-5-11 17:12
没有的.PASS是不会显示绿色的打勾的!
只会在REPORT那里的RESULT显示,
如果是FAIL,就有会打叉显示!
打勾是作CHECKPOINT时才会!
作者: gaoxiaoyun286    时间: 2007-6-2 20:48
又学到东西了
作者: flyfly310    时间: 2007-6-5 15:19
http://bbs.51testing.com/viewthr ... 2%BC%EC%B2%E9%B5%E3
这个帖子应该比较有帮助
作者: lovealina    时间: 2007-12-6 14:07
有帮助




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2