51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

楼主: xueboy118
打印 上一主题 下一主题

[原创] 如何使用Database checkpoint检查添加的数据是否正确???

[复制链接]

该用户从未签到

21#
发表于 2006-5-30 12:14:42 | 只看该作者
Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set DataTable("Pname", dtGlobalSheet)
在这句后面加一句话,把name传给username
用类似这样的方法取
usname = Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").GetROProperty("Text")
这句话不一定正确,你自己看一下

然后,你要不直接用ado连接去查看
Dim res,cmd,sql
Set Res=createobject("adodb.recordset")
Set Cmd=createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=xhq;Data Source=192.168.191.142"  '这句话是连接数据库的数据源,要做修改
Cmd.CommandType = 1
sql="selec t * from 表 where name=username"
Cmd.CommandText = sql
Set res = Cmd.Execute()
Set res = nothing
Set cmd.ActiveConnection = nothing
Set Cmd= nothing
回复 支持 反对

使用道具 举报

该用户从未签到

22#
发表于 2006-5-30 12:36:48 | 只看该作者
to xueboy118:
你这是将录制和descriptive programming搅在一起了。
在expert view中看到录制的语句隐藏了很多的描述性语句(意思是说你看到的语句已经封装了一些二进制执行数据,不是真正的编程语句,所以不能简简单单那样写,除非你用keyword view操作)。要得到你放在globalsheet中的参数值,可以在expert view中用编程语句这样写:
Dim varSheet, strName
Set varSheet = DataTable.GlobalSheet
strName = varSheet.GetParameter("pName").Value
这里strName就是你所要的值了。

[ 本帖最后由 michaelyung 于 2006-5-30 12:38 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

23#
发表于 2006-5-30 13:23:45 | 只看该作者
不需要那么麻烦吧,各位??

数据库中一般都有一个字增长的字段,比如ID什么的,取Top 1就行了~

没有的话,你就不要用数据库检查点了,用21楼的方法将数据取出来再判断好了~
回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    24#
     楼主| 发表于 2006-5-30 13:56:44 | 只看该作者
    我的脚本现修改如下:
    Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set DataTable("Pname", dtGlobalSheet)
    usname = Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").GetROProperty("Text")
    Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("password").SetSecure "447bc007c1401dd4511996463d35fd01"
    Browser("网站后台管理系统").Page("网站后台管理系统").WebButton("登 录").Click
    Dim res,cmd,sql
    Set Res=createobject("adodb.recordset")
    Set Cmd=createobject("adodb.command")
    Cmd.activeconnection="Provider = Sqloledb; User ID = sa; Password = sa; Initial Catalog =bb; Data Source = 192.168.5.196 "
    Cmd.CommandType = 1
    sql="selec t  *  from admin_user  where name=username"
    Cmd.CommandText = sql
    Set res = Cmd.Execute()
    Set res = nothing
    Set cmd.ActiveConnection = nothing
    Set Cmd= nothing
    Browser("网站后台管理系统").Page("网站后台管理").Sync

    执行后 QuickTest报错,提示如下:
    第 1 行: '*' 附近有语法错误。
    有一黄色小箭头指向          Set res = Cmd.Execute()    这一句
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    25#
     楼主| 发表于 2006-5-30 14:06:03 | 只看该作者
    michaelyung ,你的方法我还是不是很明白,如你所说,在expert view中用
    Dim varSheet, strName
    Set varSheet = DataTable.GlobalSheet
    strName = varSheet.GetParameter("pName").Value
    把我想要的值取出,在Database checkpoint的检查点中又该如何使用?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    26#
    发表于 2006-5-30 14:12:28 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 13:56 发表
    我的脚本现修改如下:
    Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set DataTable("Pname", dtGlobalSheet)
    usname = Browser(" ...


    晕,怎么不变通一下
    问题出在"select * from   表 where name=usename"
    usename是一个变量,这样写表明它是一个常量.
    应该用个连接符,这样写"select * from 表 where name="&usename
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    27#
    发表于 2006-5-30 14:15:33 | 只看该作者
    我前面给你的代码有点疏忽,不过不要我怎么写你就怎么写啊,先把代码给看懂了,select 我写成这样了selec t,你也这么写???
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    28#
     楼主| 发表于 2006-5-30 14:30:05 | 只看该作者
    呵呵,xiaonan ,不好意思 ,我已经N常时间没用VB了,都忘光了,你开始给的连接数据库的数据源那句就在我机器上报错,还时找人改的,改好人家就走了,我只能自己瞎折腾了。
    我刚用了你说的方法,还是报同样的错。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    29#
    发表于 2006-5-30 14:41:41 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 14:06 发表
    michaelyung ,你的方法我还是不是很明白,如你所说,在expert view中用
    Dim varSheet, strName
    Set varSheet = DataTable.GlobalSheet
    strName = varSheet.GetParameter("pName").Value
    把我想要的 ...


    嗯……我都不知道怎么说了,我觉得你把录制到的语句当成原始的编程语句了,然后使劲在录制和编程间折腾,结果还把自己搞糊涂了。你前面的Browser()那些是QTP录制呈现给你的语句,和后面那部分(比如xiaonan给你提供的程序有着本质的不同)。你写程序时如果只这样写Browser("") 肯定是错的的。
    这样吧:把你录制得到的可运行的语句拷贝出来,重新开一个新的Test,再把之前的语句粘贴进去(不要录制),你再运行下,肯定是不行的。不知道你是否会明白点。

    其实明白这个不同后,你的问题是非常简单的一个问题。采用任何一个方法,或者综合两者的方法都行。

    我的意思:你没搞清楚两者的区别,弄清楚了选择其中一个去做(比如descriptive programming,现在我们都根本不去用录制了),不就是编程嘛,把录制的思想抛弃掉,写代码,得到一个值,再取出一个值,两者一比较就是。

    [ 本帖最后由 michaelyung 于 2006-5-30 14:44 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    30#
     楼主| 发表于 2006-5-30 14:51:50 | 只看该作者
    我要晕了,是你们水平太高了,还时我太差劲了,我是刚用QuickTest没多久呀
    我的录制脚本就这么一点,如下:
    Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("username").Set "admin"
    Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("password").SetSecure "447bc007c1401dd4511996463d35fd01"
    Browser("网站后台管理系统").Page("网站后台管理系统").WebButton("登 录").Click
    Browser("网站后台管理系统").Page("网站后台管理").Sync

    要求很简单,就是用“admin”作参数,在数据库中找一条记录,在cliak事件后添加个 Database checkpoint的检查点,或是别的什么检查点,只要能检查出数据库中存在这一条记录就ok了。
    谁能帮我改改!!!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    31#
    发表于 2006-5-30 15:08:27 | 只看该作者
    我也要晕了。
    你能得到admin参数化的值不就可以了吗,你的目的就是将admin参数化啊。其他的检查就是编程啊,跟QTP的关系都不大了。如果你的database能可视化,那就继续录制。如果不可以,编程获取到数据库的该项,一个比较不就出来了??

    [ 本帖最后由 michaelyung 于 2006-5-30 15:09 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    32#
    发表于 2006-5-30 15:17:24 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 14:51 发表
    我要晕了,是你们水平太高了,还时我太差劲了,我是刚用QuickTest没多久呀
    我的录制脚本就这么一点,如下:
    Browser("网站后台管理系统").Page("网站后台管理系统").WebEdit("userna ...


    基于你们的我改一下,不需要录制,大致就是这样:

    Dim objParent, strName, strPassword   
    strName = ""
    strPassword=""                 ' here you can define it or get it from a .xls file.
    Set objParent = Browser("title:=网站后台管理系统").Page("title:=网站后台管理系统")
    objParent.WebEdit("text:=username").Set strName
    objParent.WebEdit("text:=password").Set strPassword
    objParent.WebButton("text:=登 录").Click

    Dim res,cmd,sql
    Set Res=createobject("adodb.recordset")
    Set Cmd=createobject("adodb.command")
    Cmd.activeconnection="Provider = Sqloledb; User ID = sa; Password = sa; Initial Catalog =bb; Data Source = 192.168.5.196 "      'use the correct info for your database.
    Cmd.CommandType = 1
    sql="select  *  from admin_user  where name="  &  strName
    Cmd.CommandText = sql
    Set res = Cmd.Execute()

    // here you got the results from searching the database.

    Set res = nothing
    Set cmd.ActiveConnection = nothing
    Set Cmd= nothing

    objParent.sync()

    我觉得自动化测试,应该尽量将你要参数化的数据放入一个xls文件中,这样不用你手工输入,而且易于添加多个数据项给测试。这就是上面说要参数化的数据可以从xls文件中获取到。

    如果你用录制,将strName 参数化后不是有一个变量名吗,后面就用此名就可以了啊,唉,很简单的问题,结果说的我自己都觉得麻烦了。

    [ 本帖最后由 michaelyung 于 2006-5-30 15:24 编辑 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    33#
     楼主| 发表于 2006-5-30 15:18:26 | 只看该作者
    我也知道接着就是要编程了,可是在QuickTest中编程,我还不是很懂,我目前使用QuickTest,也就是录制脚本,在修修改改,编程的功能还没用过,具体操作,对我来说真的有点难,唉,不怕你们笑话,我使用QuickTest的水平有点菜

    [ 本帖最后由 xueboy118 于 2006-5-30 15:19 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    34#
    发表于 2006-5-30 15:20:25 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 15:18 发表
    我也知道接着就是要编程了,可是在QuickTest中编程,我还不是很懂,我目前使用QuickTest,也就是录制脚本,在修修改改,编程的功能还没用过,具体操作,对我来说真的有点难,唉,不怕你们小花,我使用QuickTest的水 ...

    其实上面xiaonan的那个 就可以做了。
    不是有select数据库得到的结果吗,select * from * where name = username
    这个就得到结果了啊。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    35#
    发表于 2006-5-30 15:25:46 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 14:30 发表
    呵呵,xiaonan ,不好意思 ,我已经N常时间没用VB了,都忘光了,你开始给的连接数据库的数据源那句就在我机器上报错,还时找人改的,改好人家就走了,我只能自己瞎折腾了。
    我刚用了你说的方法,还是报同样的错。

    你要把username取了之后加两个单引号啊,如下:
    aaa="'000001'",你可以这样username="'"&usename&"'"
    sql语句里字符型是要加单引号的
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    36#
     楼主| 发表于 2006-5-30 15:48:47 | 只看该作者
    xiaonan,你说的加单引好的方法我也试过了,可就是下不去,QuickTest报错,提示如下:
    第 1 行: '*' 附近有语法错误。还是在Set res = Cmd.Execute()这里卡助了


    michaelyung ,你的方法我用了,脚本如下:
    Dim objParent, strName, strPassword   
    strName = "admin"
    strPassword="admin"     
    Set objParent = Browser("title:=网站后台管理系统").Page("title:=网站后台管理系统")
    objParent.WebEdit("text:=username").Set strName
    objParent.WebEdit("text:=password").Set strPassword
    objParent.WebButton("text:=登 录").Click

    Dim res,cmd,sql
    Set Res=createobject("adodb.recordset")
    Set Cmd=createobject("adodb.command")
    Cmd.activeconnection="Provider = Sqloledb; User ID = sa; Password = sa; Initial Catalog =bb; Data Source = 192.168.5.196 "      
    Cmd.CommandType = 1
    sql="select  *  from admin_user  where name="  &  strName
    Cmd.CommandText = sql
    Set res = Cmd.Execute()

    Set res = nothing
    Set cmd.ActiveConnection = nothing
    Set Cmd= nothing

    objParent.sync()

    QuickTest报错,提示如下:
    Cannot identify the object "WebEdit" (of class WebEdit). Verify that this object's properties match an object currently displayed in your application.
    箭头指向  objParent.WebEdit("text:=username").Set strName  这句
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    37#
    发表于 2006-5-30 15:53:58 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 15:48 发表
    xiaonan,你说的加单引好的方法我也试过了,可就是下不去,QuickTest报错,提示如下:
    第 1 行: '*' 附近有语法错误。还是在Set res = Cmd.Execute()这里卡助了


    michaelyung ,你的方法我用了,脚本如下:
    ...

    晕,这里text:=username中的username我是举个例子,你要看你网页上那个webedit的text属性值是多少啊,或者是"姓名",“用户名”,password也同样啊。
    所以我觉得你应该先把这些问题都弄清楚后再来看代码,否则很容易糊涂的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    38#
    发表于 2006-5-30 16:01:36 | 只看该作者
    麻烦你自己在sql语句下面 ,加句msgbox sql看,报出什么信息好哇?自己也主动一点,怎么一直跟着我们走呢?别担心,慢慢来,多试几次,会好的.现在可能你对编程上的东西有点不太熟
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-5-4 14:23
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    39#
     楼主| 发表于 2006-5-30 16:07:07 | 只看该作者
    michaelyung ,你说的webedit的text属性值是不是WEB页面输入框前显示出来的字符,那个字符我试了,也不行
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    40#
    发表于 2006-5-30 16:14:17 | 只看该作者
    原帖由 xueboy118 于 2006-5-30 16:07 发表
    michaelyung ,你说的webedit的text属性值是不是WEB页面输入框前显示出来的字符,那个字符我试了,也不行

    你用object spy看下它的值。
    还有我弄错了,webedit好像没有text属性
    你改成webedit("name:= username")看看。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-20 03:23 , Processed in 0.075613 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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